使用多态性将派生类的值复制到基类

Using polymorphism to copy derived class' value to the base class

本文关键字:复制 基类 多态性 派生      更新时间:2023-10-16
英语不是我的第一语言。我希望我不会犯很多错误。我会尽我最大的努力做到尽可能清楚!

我有一个基本类

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 classDiesel继承自Engine,并将参数传递给它的基类。

现在使用这个:

Diesel disel_engine(0.0, "diesel engine");
const Engine& eng = disel_engine;
cout << eng.GetName();

调用eng.GetName()打印正确的发动机名称

此处演示