设置类名继承和显示在另一个类中

Set class name inherit and display in another class

本文关键字:另一个 显示 继承 设置      更新时间:2023-10-16

为什么我不能设置类名并继承它并像下面给出的代码一样显示在另一个类中?我做错了什么?

#include<iostream>
#include<string>
using namespace std;
class dealer
{
    string name;
public:
    dealer(){};
    dealer(string n): name(n){};
    ~dealer(){};
    //void setname(string n){name = n;};
    void display(){cout<<name<<endl;}
};
class car : public dealer
{
public:
    dealer b;
    car(){};
    //car(string n): dealer(n){};
    ~car(){};
    void display(){dealer::display();}
}; 
int main ()
{
    dealer a("ABC");
    car c;
    c.display();
}    

工作正常。你用car默认构造函数初始化c,它隐式地调用dealer默认构造函数,它不做任何事情。name仍然是一个空字符串,这就是打印出来的内容。解决这个问题:

//car(string n): dealer(n){}; <--- uncomment
car c("ABC"); //initialize like this

来自注释:你的继承层次结构不正确。car有一个dealer,但不是一个经销商。一个更好的设计系统应该是这样的:

class dealer { ... };
class car
{
    dealer &d;
    car(dealer &nd): d(nd) { };
    void display(){ d.display();}
}
相关文章: