파생 클래스에서 기본 클래스 생성자와 할당 연산자 사용
C에서 상속을 사용하면 파생 클래스가 기본 클래스의 특정 기능을 상속할 수 있습니다. 그러나 파생 클래스에 기본 클래스와 동일한 생성자 및 할당 연산자 집합이 필요한 경우 파생 클래스에서 이러한 함수를 다시 작성해야 할 수도 있습니다. 특히 비공개 멤버 변수에 액세스해야 하는 할당 연산자의 경우 이는 지루한 작업이 될 수 있습니다.
다행히도 대체 솔루션이 있습니다. 파생 클래스는 기본 클래스 생성자와 할당 연산자를 명시적으로 호출할 수 있습니다. 이 기술을 사용하면 기존 구현을 다시 작성할 필요 없이 활용할 수 있습니다.
다음 코드 예제를 고려하세요.
<code class="cpp">class Base { public: Base(); Base(const string& s); Base(const Base& b) { (*this) = b; } Base& operator=(const Base & b); private: // ... (private member variables and functions) }; class Derived : public Base { public: // Override the "foo" function without modifying other aspects of the base class virtual void foo() override; };</code>
이 예제에서 Derived는 Base의 생성자와 할당 연산자를 상속합니다. 이러한 함수를 명시적으로 정의할 필요는 없습니다. 대신 Derived 객체를 생성하거나 Base 객체를 Derived 객체에 할당할 때 컴파일러는 자동으로 적절한 기본 클래스 생성자 또는 할당 연산자를 호출합니다.
할당 연산자에도 동일한 전략을 사용할 수 있습니다.
<code class="cpp">class Base { public: // ... (private member variables and functions) Base(const Base& b) { /* ... */ } Base& operator=(const Base& b) { /* ... */ } }; class Derived : public Base { public: int additional_; // Call the base assignment operator within the derived operator Derived& operator=(const Derived& d) { Base::operator=(d); additional_ = d.additional_; return *this; } };</code>
이 기술을 사용하면 파생 클래스가 기본 클래스의 기능을 완전히 활용하면서 필요한 동작만 재정의하거나 추가할 수 있습니다. 복잡한 기본 클래스 생성자나 할당 연산자를 다시 작성할 필요가 없어 상속이 단순화됩니다.
위 내용은 파생 클래스가 기본 클래스 생성자와 할당 연산자를 어떻게 활용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!