[英]C++ - Constructor Where Parameters Are Used By Base Class' Constructor
我有一個繼承Vehicle類的Car類。 Car和Vehicle類都接受參數“wheels”。 根據我對繼承如何工作的理解,對象Car將分兩個階段構建:Vehicle首先通過調用其構造函數來構造,然后是Car,它也將調用它的構造函數。 我的問題是當Vehicle的構造函數使用它的參數時,我將如何編寫Car的構造函數?
class Vehicle {
public:
Vehicle(int wheels);
};
class Car {
public:
Car(int wheels): Vehicle(wheels);
};
你需要從Vehicle繼承:
頭文件:
class Car: public Vehicle {
public:
Car(int wheels);
};
Cpp文件:
Car::Car(int wheels): Vehicle(wheels) {
}
您將輪子傳遞給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指出了這一點。
內聯:
Car(int wheels) : Vehicle(wheels) { }
或外線:
class Car : public Vehicle {
Car(int);
// ...
};
Car::Car(int wheels) : Vehicle(wheels) { }
首先,
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中初始化。
這回答了你的問題了嗎?
你在尋找的是:
Car::Car(int wheels)
:Vehicle(wheels)
{
// Do Car constructor specific stuff here.
}
:Vehicle(wheels)
將車輪參數向上傳遞給車輛構造函數,它將按照您描述的順序構建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.