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);
}