c++如何初始化派生类中的参数

c++ how to initialise params in derived classes

本文关键字:参数 派生 初始化 c++      更新时间:2023-10-16
class car
{
    string carID
    string carName
};
class electric : public car
{
    string battery
    string model
};

基类为carelectric是继承自car的派生类。构造函数中需要包含什么来初始化它们,然后在用户输入带有所有属性数据的新车时设置这些值?

您需要定义构造函数并随后正确使用它们。在派生类初始化期间,应该始终调用基类的适当构造函数:

Derived::Derived(...):Base(...),<optional initizaliation of Derived members>{...}
例如:

class car
{
    string carID;
    string carName;
public:
    car(string carid, string carname):carID(carid),carName(carname){}
};
class electric : public car
{
    string battery;
    string model;
public:
    electric(string carid, string carname, string battery, string model)
    :car(carid,carname),battery(battery),model(model){}
};

在您当前的模型中,您实际上无法访问car的任何字段,因为在c++中默认使用class关键字时,所有字段都是private。它们需要是protectedpublic,以便子类访问它们。

应该通过在派生类的构造函数初始化列表中调用基类构造函数来初始化基类成员。

 class car
 {
    string carID
    string carName
    public:
       car (string id, string name): carID(id), carName(name) {}
 };
 class electric : public car
 {
   string battery
   string model
   public:
      electric (string id, string name, string b, string m): car(id, name), 
                                                battery(b), model(m){}
 };