c ++如何在派生类中初始化params

时间:2013-05-06 17:14:31

标签: c++

class car
{
    string carID
    string carName
};

class electric : public car
{
    string battery
    string model
};

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

3 个答案:

答案 0 :(得分:1)

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

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){}
};

答案 1 :(得分:0)

在您当前的模型中,您实际上无法访问汽车的任何字段,因为默认情况下在使用class关键字时在C ++中,所有字段都是private。它们必须是protectedpublic才能让子类访问它们。

答案 2 :(得分:0)

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

 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){}
 };