英语不是我的第一语言。我希望我不会犯很多错误。我会尽力让自己尽可能清楚!
我有一个基类
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;。
我不知道如何使用多态来做到这一点。
感谢您阅读此问题!
答案 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 class
,Diesel
继承自Engine
并传递它的基类的参数。
现在使用它:
Diesel disel_engine(0.0, "diesel engine");
const Engine& eng = disel_engine;
cout << eng.GetName();
对eng.GetName()
的调用会打印正确的引擎名称