질문이 중복되면 용서합니다 ... 나는 만족스러운 답변을 얻을 수 없어서 내 방식 ....기본 클래스 생성자가 보호 된 경우 파생 클래스 함수에서 기본 클래스의 객체를 만들 수없는 이유는 무엇입니까?
은 위의 코드는 자료의 생성자가 보호 말하는 컴파일 오류가 thow합니다 샘플 코드를
class Base {
protected:
Base() {}
};
class Derived:public Base {
public:
void func() {
Base obj;
}
};
을 고려하십시오. 그러나 Main 클래스에서 Derived 클래스의 Object를 생성하면 Base 클래스의 생성자가 파생 클래스 함수에서 호출 될 수 있다는 것을 알게됩니다 (파생 클래스 생성자가 내부적으로 호출 한 것을 알게 됨). 그러면 파생 클래스 함수 내에서 Base 클래스 객체를 만들 수없는 이유는 무엇입니까?
그리고 한가지 더 .... 같은 클래스의 메소드 내부가 아닌 다른 클래스의 생성자를 보호하는 다른 방법이 있습니다 (싱글 톤을 생성하는 동안) ...?
따라서 기본 클래스의 정적 공용 메서드 (예 : Singleton 만들기) 이외의 보호 된 생성자를 가진 클래스의 개체를 인스턴스화하는 다른 방법이 있습니다. –