簡體   English   中英

C ++ - 基類的構造函數使用參數的構造函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM