본문 바로가기
Programming/C++

[Modern C++ 공부 - Day10] Constructor 생성

by 롱일스 2023. 7. 16.
반응형

Modern C++ 공부 Day 10입니다.

1. 기본 생성자 default constructor

기본 생성자 멤버함수를 정의하는 다양한 방법.

#include <iostream>

using namespace std;

class Internet {
public:
    void connect() { cout << "Connected to Internet \n";}
    void login(const string& id, const string& pw) {
        cout << "Logged on with username '" << id;
        cout << "' and password: " << pw << endl;
    }
};

class refrigerator {
    int temperature{20};
    bool door_open{false};
    bool power_on{false};
    Internet internet;
public:
    // Constructor with no defaults
    refrigerator(int temperature, const string& id, const string& pw): temperature(temperature) {
        internet.connect();
        internet.login(id, pw);
    }
    // Default constructor << delegating constuctor, 다른 constructor를 이용한 constructor
    refrigerator(): refrigerator(20, "mark", "1234"){};

    // Constructor using default login
    refrigerator(int temperature): refrigerator(temperature, "mark", "1234") {};

    // Constructor using default temperature
    refrigerator(const string& id, const string& pw): refrigerator(20, id, pw) {};

    void print() {
        cout << "Temperature is " << temperature << endl;
        cout << boolalpha;
        cout << "Is door open? " << door_open << endl;
        cout << "Is power on? " << power_on << endl;
    }
};

int main() {
    refrigerator ref;
    ref.print();
}

 

2. 복사 생성자 copy constructor

 

728x90
반응형