다음 코드는 어떻게 작동합니까? MakeFinal 생성자는 보호되어 있으므로 FinalUser 클래스에 액세스 할 수 없어야합니다. 하지만 빌드 나 실행 오류가 발생하지 않았습니다.C++에서 다중 레벨 가상 상속의 보호 된 생성자
class MakeFinal
{
protected:
MakeFinal(void) {};
public:
~MakeFinal(void) {};
};
class Final : virtual public MakeFinal
{
public:
Final(void) {};
~Final(void) {};
};
class FinalUser : public Final
{
public:
FinalUser(void) {};
~FinalUser(void) {};
};
int main()
{
FinalUser *finalUserHeap_ = new FinalUser();
return 0;
}
'FinalUser'는'MakeFinal'에 직접 접근 할 필요가 없습니다. –