파생 클래스 생성자의 기본 클래스 멤버 변수 초기화
객체 지향 프로그래밍에서 상속을 사용하면 파생 클래스가 속성과 동작을 상속받을 수 있습니다. 기본 수업. 그러나 파생 클래스 생성자 내에서 기본 클래스 멤버 변수를 초기화하는 것이 문제가 될 수 있습니다.
왜 파생 클래스 생성자에서 기본 클래스 멤버 변수를 초기화할 수 없나요?
다음 예를 고려하십시오.
class A { public: int a, b; }; class B : public A { B() : A(), a(0), b(0) { } };
이 코드에서 클래스 B는 기본 클래스 멤버 변수 a 및 b는 A(), a(0), b(0) 구문을 사용하여 자체 생성자 내에 있습니다. 그러나 이 접근 방식은 올바르지 않습니다. 그 이유는 a와 b가 클래스 B의 멤버가 아니라 클래스 A의 멤버이기 때문입니다. 클래스 A만이 이러한 변수를 직접 초기화할 수 있습니다.
초기화 모범 사례
이 문제를 해결하기 위해 다음과 같은 몇 가지 권장 접근 방식이 있습니다.
class A { public: int a, b; }; class B : public A { B() : a(0), b(0) { } };
그러나 멤버 변수를 공개로 만드는 것은 공개 원칙을 위반하므로 권장되지 않습니다. 캡슐화 및 보안.
class A { protected: A(int a, int b) : a(a), b(b) {} // Accessible to derived classes private: int a, b; // Keep these variables private in A }; class B : public A { public: B() : A(0, 0) // Calls A's constructor, initializing a and b in A to 0. { } };
이 접근 방식을 사용하면 파생 클래스가 원하는 초기 값으로 기본 클래스 생성자를 호출하여 기본 클래스 멤버 변수를 초기화할 수 있습니다.
위 내용은 파생 클래스 생성자에서 기본 클래스 멤버 변수를 어떻게 초기화해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!