有一个基类:
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(bool b);
void another_method();
};
B的实施:
B::B(string b):A(/*what to write here*/)
{
cout<<"here it is : "<<b;
}
void B::another_method() { ... }
是否有可能造成这种情况? B是否有可能在其构造函数中有一个布尔参数,而它的父元素的构造函数param有一个字符串参数?
答案 0 :(得分:3)
是的,完全没问题。从子构造函数向父构造函数传递参数是 不 必须的,并且您可以从子类传递所有,一些,无参数,并在需要时添加更多构造函数参数。 / p>
B::B(bool b) : A("Parent")
{
cout<<"here it is : "<<b;
}
答案 1 :(得分:2)
是的,你可以。您必须使用正确的签名正确调用父构造函数,但您的子构造函数可以拥有自己完全不同的签名。
B::B(bool b):A(string())
{
cout<<"here it is : "<<b;
}
以上原因导致A的构造函数以空字符串作为参数执行,然后B的构造函数以bool b
作为参数执行。