假设我有一个名为Car的类,另一个继承自Car的名为SuperCar的类。如何确保在SuperCar的构造函数中调用Car的costructor?我只是这样做:Car.Car(// args);?
由于
答案 0 :(得分:5)
没有成员变量的示例类。
class Car {
Car(); /*If you want default objects*/
Car(/*arg list*/); /* maybe multiple constructors with different, count and
type args */
};
class SuperCar {
SuperCar(/*args list*/) : Car(/*arg list*/){/*Constructor Body*/}
};
答案 1 :(得分:3)
在SuperCar构造函数中,在构造函数头和构造函数体之间添加: Car(... your arguments ...)
。
例如:
#include <iostream>
using namespace std;
class Car {
public:
Car() { }
// Oh, there is several constructors...
Car(int weight){
cout << "Car weight is " << weight << endl;
}
};
class SuperCar: public Car {
public:
// we call the right constructor for Car, detected by call arguments
// relying on usual function overloading mechanism
SuperCar(int weight, int height) : Car(weight) {
cout << "SuperCar height " << height << endl;
}
};
int main(){
SuperCar(1, 10);
}
PS:顺便说一句,调用SuperCar
Car
的子类令人困惑,你应该避免这种情况。
答案 2 :(得分:3)
示例:
SuperCar::SuperCar(Parameter p) : Car(p){
//some voodoo...
}
如果我没记错的话
编辑:该死的,kriss更快:)
答案 3 :(得分:1)
在派生类构造函数中,使用所需参数为基类定义初始值设定项:
SuperCar(/*params*/) : Car(/*differentParams*/)
{
}
答案 4 :(得分:1)
您的SuperCar
构造函数就像,
SuperCar(int sayForExample):car(sayForExample),m_SuperCarMember(sayForExample)
{
// constructor definition
}
这将调用特定的构造函数car(int)
和初始化 SuperCar
的成员m_SuperCarMember
..
希望有所帮助......
答案 5 :(得分:0)
您可以使用初始化列表执行此操作。
SuperCard::SuperCar(args):Car(args){ //Supercar part}