如何实现子类的构造函数?

时间:2014-12-09 07:20:25

标签: c++

有一个基类:

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的构造函数的实现中写什么?

3 个答案:

答案 0 :(得分:2)

该行必须阅读

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

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

答案 1 :(得分:1)

那就是:

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

与普通对象初始化一样(初始化传递参数A的基础子对象b)。

答案 2 :(得分:1)

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

因此,如果您想使用b初始化a,可以执行此操作:B::B(string b):A(b)。否则,您必须执行B::B(string a, string b):A(a)