在派生类中使用基类构造函数和赋值运算符
在 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中文网其他相关文章!