-3
class car
{
    string carID
    string carName
};

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

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

4

3 回答 3

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){}
};
于 2013-05-06T17:20:40.877 回答
0

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

于 2013-05-06T17:18:58.087 回答
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){}
 };
于 2013-05-06T17:21:28.110 回答