카테고리 없음

06. C++_기반클래스 멤버데이터 초기화

만수르코딩방 2024. 5. 15. 17:18

C++ 에서 기반 클래스의 데이터를 초기화하는 것은 주로 기반 클래스의 생성자(constructor)에서 수행됩니다.

기반클래스(가전)에서 여러 파생클래스를 선언한 후(냉장고, TV, 에어컨) 파생클래스의 생성자를 호출하여 기반클래스의 멤버데이터를 초기화하기 위한 방법에 대해 알아보겠습니다.

#include <string>

class Appliance
{
	std::string name;
	int powerConsumption;
public:
	// 2. Appliance 의 생성자(2 augment)에서 자신의 멤버를 초기화 한다.
	Appliance(const std::string& name, int power)
		: name(name), powerConsumption(power) {}
};

class Airconditioner : public Appliance
{
	int state;
    int temperature;
public:
	// 3. 파생 클래스 생성자는 자신의 고유 멤버를 초기화 하기 위한 인자뿐 아니라
	//    기반 클래스에서 상속 받은 멤버를 초기화 하기 위한 값도 생성자로 받아야 한다.
    //    (다른 프로세스에서 파생클래스는 기반클래스의 멤버(protected)에 접근 불가함)
    //    이때 기반클래스의 생성자를 초기화하는 방법은 set_function을 사용하는것, 값을 대입하는것, 생성자호출을 이용하는 것 등 다양한 방법을 적용할 수 있다.
	Airconditioner( const std::string& name, int power, int state, int temperature)
		: Appliance(name, other_member), state(state), temperature(temp) {}

	// 핵심 : 자신의 멤버 데이타는 자신이 직접 초기화 하지만
	//       기반 클래스의 멤버는 기반 클래스의 생성자로 보내서 초기화 되게 해야한다.
};

int main()
{
	Airconditioner* p = new Airconditioner("samsung", 1000, 1, 18);
}