c++如何初始化派生类中的参数
c++ how to initialise params in derived classes
class car
{
string carID
string carName
};
class electric : public car
{
string battery
string model
};
基类为car
。electric
是继承自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
。它们需要是protected
或public
,以便子类访问它们。
应该通过在派生类的构造函数初始化列表中调用基类构造函数来初始化基类成员。
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){}
};
相关文章:
- 在派生函数中指定void*参数
- C++重载函数,一个采用基类的参数,另一个采用派生类的参数
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 创建派生自可变参数模板包的类型元组
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 派生类(构造函数具有参数)和基类(构造函数缺少参数)之间没有可行的转换
- C++派生类重载函数(带有 std::function 参数)不可见
- C++ 事件管理器的回调,使用 std::function 和 std:bind 以及派生类作为参数
- 从模板参数派生的类
- C++ 如何使派生类自动获取基类参数
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- 如何在派生类中正确覆盖具有不同参数的函数?
- 根据参数创建派生类的新实例
- 具有派生参数的函数重写
- 将派生类作为参数传递给方法,该方法是具有智能指针的基类
- 将方法参数类型更改为子类中的派生类
- 派生类的模板参数推导
- 将派生类构造函数参数传递给受保护的成员
- 具有原始方法参数派生类的 C++ 重载方法参数