【问题标题】:how to implement a subclass's constructor?如何实现子类的构造函数?
【发布时间】:2014-12-09 07:20:25
【问题描述】:

有一个基类:

class A {
public :
A(string a);
void some_method();
};

A 的实现:

A::A(string a) {
cout<<"here it is : "<<a;
}
void A::some_method() { ... }

有一个继承自 A 的类:

class B : A {
public :
B(string b);
void another_method();
};

B 的实现:

B::B(string b):A(string a) // it causes error at compil time 
{
cout<<"here it is : "<<b;
}
void B::another_method() { ... }

B的构造函数的实现应该写什么?

【问题讨论】:

标签: c++


【解决方案1】:

该行必须为

B::B(string b):A(b)

您可以通过将 A 构造函数视为调用而不是声明来记住这一点。

【讨论】:

    【解决方案2】:

    那很简单:

    B::B(string b):A(b) 
    {
    

    就像一个普通的对象初始化(你初始化基础子对象A传递你的参数b)。

    【讨论】:

      【解决方案3】:

      如果你有一个像B::B(string b):A(string a) 这样的构造函数,你希望构造函数的调用者如何传递参数? :-)

      所以如果你想使用b来初始化a,你可以这样做:B::B(string b):A(b)。否则,你必须这样做B::B(string a, string b):A(a)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-12
        • 2013-01-30
        • 2021-06-25
        • 2019-11-23
        • 2021-05-24
        • 1970-01-01
        • 2021-09-19
        • 1970-01-01
        相关资源
        最近更新 更多