使用多态来复制派生类'基类的值

时间:2017-10-15 18:46:10

标签: c++ 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的柴油类。

将柴油发动机的值通过参考传递给新发动机??

当我致电const engine &e = diesel_engine;时,应将diesel_engine的值(名称和重量)复制到新引擎e。

所以&#39; e&#39;应该有500.00的重量和名称&#34;柴油&#34;。

我不知道如何使用多态来做到这一点。

感谢您阅读此问题!

1 个答案:

答案 0 :(得分:1)

让我们从类声明开始

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()的调用会打印正确的引擎名称

Demo Here