使用多态性将派生类的值复制到基类
Using polymorphism to copy derived class' value to the base class
英语不是我的第一语言。我希望我不会犯很多错误。我会尽我最大的努力做到尽可能清楚!
我有一个基本类
class engine
{
private :
std::string name;
double weight;
public:
engine();
~engine();
std::string getName() const;
int getWeight() const
};
std::string engine::getName() const{
return this->name;
}
int engine::getWeight() const{
return this->weight;
}
和派生类
class diesel : public engine
{
private:
std::string name;
double weight;
public:
diesel();
~diesel();
};
diesel::diesel(){
this->name = Diesel;
this->weight = 500.00;
}
在我的main.cpp 中
int main()
{
diesel diesel_engine;
const engine &e = diesel_engine;
std::cout<<e.getWeight()<<e.getName()<<std::endl;
return 0;
}
1-我必须构造一个名为diesel_engine的diesel类。
2-通过引用将diesel_engine的值传递给新发动机??
当我调用const engine &e = diesel_engine;
时,柴油发动机的值(名称和重量)应该复制到新发动机e。
因此"e"的重量应为500.00,名称为"Diesel"。
我不知道如何使用多态性来做到这一点。
感谢您阅读此问题!
让我们从类声明开始
class Engine
{
private:
float weight_;
std::string name_;
public:
Engine(float weight, std::string name) : weight_(weight), name_(name){};
std::string GetName() const { return name_;}
};
class Diesel : public Engine
{
public:
Diesel(float weight, std::string name) : Engine(weight, name){}
};
所以我们这里有一个Engine
类,它是我们的base class
,然后我们定义了Diesel class
,Diesel
继承自Engine
,并将参数传递给它的基类。
现在使用这个:
Diesel disel_engine(0.0, "diesel engine");
const Engine& eng = disel_engine;
cout << eng.GetName();
调用eng.GetName()
打印正确的发动机名称
此处演示
相关文章:
- 是否可以初始化不可复制类型的成员变量(或基类)
- 基类的填充将被复制到派生类中
- 我什么时候会默认(而不是删除)基类中的复制和移动操作
- 通过基类接受方法转发派生 UniquePtr 的右值会移动引用而不是复制
- 如何复制只引用基类的派生类
- 为什么为派生类定义复制构造函数需要定义基类的默认构造函数?
- 为什么基类中的复制和交换会导致派生类中的复制赋值运算符被隐式删除?
- 不可复制基类的聚合初始化
- 有没有办法复制派生类指针的向量而不将其强制转换为基类?
- 如何保存指向抽象基类的指针/引用,但在 c++ 中仍然可以复制
- 在派生类中使用基类复制 CTOR
- 复制派生类更改基类的构造函数
- 使用 "using" 关键字继承基类的复制和移动构造函数
- 当派生类的基类具有成员指针时,对其进行深层复制
- 试图在具有std ::任何构造函数的基类中调用复制构造函数的问题
- 是否可以在基类中删除复制和移动构造函数/分配运算符
- 从C++中的基类继承复制/移动构造函数作为构造函数
- 复制基类和派生类中的构造函数
- 使用多态性将派生类的值复制到基类
- C++:复制基类成员函数中的对象数据