자식 클래스의 초기화 목록에서 부모 클래스의 보호된 데이터 멤버 초기화
객체 지향 프로그래밍에서 파생 클래스는 기본 클래스의 기능을 상속받을 수 있습니다. . 자주 발생하는 한 가지 질문은 하위 클래스 생성자의 초기화 목록을 사용하여 상위 클래스의 보호된 데이터 멤버를 초기화할 수 있는지 여부입니다.
다음 코드 예제를 고려하세요.
<code class="cpp">class Parent { protected: std::string something; }; class Child : public Parent { private: Child() : something("Hello, World!") { } };</code>
이 코드를 컴파일하려고 시도하면 컴파일러는 "Child" 클래스에 "something"이라는 데이터 멤버가 포함되어 있지 않다는 오류를 발생시킵니다. 이는 초기화 목록이 하위 클래스 자체 내의 데이터 멤버만 초기화하도록 허용되기 때문입니다.
원하는 기능을 달성하려면 원하는 초기 값을 받아들이고 이를 전달하는 생성자를 상위 클래스에 추가해야 합니다. 기본 클래스의 데이터 멤버에. 예:
<code class="cpp">class Parent { protected: Parent(const std::string& something) : something(something) {} std::string something; }; class Child : public Parent { private: Child() : Parent("Hello, World!") { } };</code>
이 경우 "부모" 클래스의 생성자는 자식 클래스의 초기화 목록에서 호출될 때 "무언가"로 보호되는 데이터 멤버를 초기화합니다. 따라서 하위 클래스는 상위 클래스로부터 초기화된 "something" 데이터 멤버를 상속받습니다.
위 내용은 보호된 부모 클래스 멤버는 자식 클래스의 초기화 목록을 통해 초기화될 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!