1) 파생 클래스 생성자 호출 시, 기반 생성자가 호출완료된 후에,
파생 생성자 블록으로 진입함.
2) 파생 생성자에서 초기화로 기반 생성자 호출을 명시하지 않으면,
컴파일러가 기반의 디폴트 생성자를 호출함.
Derived() {}
// 사실은 위에 코드는
Derived() : Base() {}
// 이렇게 컴파일러가 암시 호출함.
Derived(int a){}
// =>
Derived(int a) : Base() {}
3) 기반에서 인자가 있는 생성자를 작성할 경우, 컴파일러는
디폴트 생성자를 암묵적으로 파생에서 만들어주지 않음.
4) 기반 클래스의 다른 생성자를 호출하고 싶다면,
파생클래스의 생성자에서 반드시 명시해야 함.
class animal
{
private :
animal() {}
}
class dog : public animal
{
public :
dog() {}
}
main()
{
animal a;
dog d;
}
class animal
{
protected :
animal() {}
}
class dog : public animal
{
public :
dog() {}
}
main()
{
animal a;
dog d;
}
-> 정답은 다음장에서
: 자신은 객체를 만들 수 없지만, 파생 클래스의 객체는 만들 수 있게 함.