我有一个继承Vehicle类的Car类。 Car和Vehicle类都接受参数“wheels”。根据我对继承如何工作的理解,对象Car将分两个阶段构建:Vehicle首先通过调用其构造函数来构造,然后是Car,它也将调用它的构造函数。我的问题是,当Vehicle的构造函数使用其参数时,如何编写Car的构造函数?
class Vehicle {
public:
Vehicle(int wheels);
};
class Car {
public:
Car(int wheels): Vehicle(wheels);
};
答案 0 :(得分:9)
您需要继承车辆:
标题文件:
class Car: public Vehicle {
public:
Car(int wheels);
};
Cpp文件:
Car::Car(int wheels): Vehicle(wheels) {
}
答案 1 :(得分:4)
将轮子传递给Vehicle构造函数,然后处理Car构造函数中的其他参数。
class Car : public Vehicle {
public:
Car(int otherParam, int wheels);
};
Car::Car(int otherParam, int wheels) : Vehicle(wheels) {
//do something with other params here
}
当然,你可以有多个其他参数,它们不需要是整数;)
编辑:在我最初的例子中,我也忘了继承车辆,感谢perreal指出这一点。答案 2 :(得分:0)
内联:
Car(int wheels) : Vehicle(wheels) { }
或外线:
class Car : public Vehicle {
Car(int);
// ...
};
Car::Car(int wheels) : Vehicle(wheels) { }
答案 3 :(得分:0)
首先,
class Car:public Vehicle{...
我不确定你的意思是“我将如何编写myCars构造函数”
Vehicle(int wheels):m_Wheels(wheels)
{
// or m_Wheels = wheels;
}
...
Car(int wheels):Vehicle(wheels)
{
if(m_Wheels != 4)
fprintf(stdout, "Uh Oh");
}
在这种情况下,调用车辆构造函数,然后调用汽车构造函数。请注意,我可以在Car中使用m_Wheels,因为它已在Vehicle中初始化。
这会回答你的问题吗?
答案 4 :(得分:0)
您正在寻找的是:
Car::Car(int wheels)
:Vehicle(wheels)
{
// Do Car constructor specific stuff here.
}
:Vehicle(wheels)
会将wheel参数向上传递给Vehicle构造函数,它将按照您描述的顺序构建。