首页  >  文章  >  后端开发  >  派生类如何利用基类构造函数和赋值运算符?

派生类如何利用基类构造函数和赋值运算符?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-03 14:31:02885浏览

How Can Derived Classes Leverage Base Class Constructors and Assignment Operators?

在派生类中使用基类构造函数和赋值运算符

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn