6-2 客货两用车* 分数 20 作者 李祥 单位 湖北经济学


#include
using namespace std;
class CAR
{
  protected: 
           double  speed;
  public:
       CAR(double  s):speed(s){ }    
        ~CAR(){}
        void Show()
        {
            cout<<"创建汽车("<"公里/小时)"<"汽车:"<"公里/小时)"<"销毁汽车("<"公里/小时)"<class BUS: virtual public CAR
 {
      protected:
             double  seat;
      public:
         BUS(double  s,double  seat):CAR(s),seat(seat){}       
         ~BUS(){ }
         void show()
         {
             cout<<"创建汽车("<"公里/小时)"<"创建客车("<"人)"<"客车:"<"公里/小时), "<"人"<"销毁客车("<"人)"<"销毁汽车("<"公里/小时)"<class TRUCK:virtual public CAR
 {
      protected:
             double  load;
      public:
        TRUCK(double  s,double  load):CAR(s),load(load){}       
         ~TRUCK(){}
         void show()
         {
             cout<<"创建汽车("<"公里/小时)"<"创建货车("<"吨)"<"货车:"<"公里/小时), "<"吨"<"销毁货车("<"吨"<"销毁汽车("<"公里/小时)"<class VAN:public BUS,public TRUCK 
 {
      
      public:
       VAN(double s,double seat,double  load):CAR(s),BUS(s,seat),TRUCK(s,load){}       //虚基类 
         ~VAN(){}
         void show()
         {
             cout<<"创建汽车("<"公里/小时)"<"创建客车("<"人)"<"创建货车("<"吨)"<"货车:"<"公里/小时), "<"人, "<"吨"<"摧毁客货两用车"<"销毁货车("<"吨"<"销毁客车("<"人)"<"销毁汽车("<"公里/小时)"<int main()
{
    CAR *p;
    double s, t, w;
    cin >>s>>t>>w;
    p = new VAN(s, t, w);
    p->Show();
    delete p;
    return 0

*主函数是不可改变的
为什么只能输出基类CRA的show函数内容 我希望的把VAN的show函数输出

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
在这段代码中,由于 VAN 类继承了 BUSTRUCK 类,而 BUSTRUCK 类都重写了 CAR 类中的 show() 函数,因此在 VAN 类中也需要重新定义 show() 函数,以便输出 VAN 类自己的信息。同时,由于 BUSTRUCK 类都是虚继承自 CAR 类的,所以在 VAN 类的构造函数中需要显式调用 CAR 类的构造函数,以确保只创建一个 CAR 对象。

修改后的 VAN 类定义如下:

class VAN : public BUS, public TRUCK {
public:
    VAN(double s, double seat, double load) : CAR(s), BUS(s, seat), TRUCK(s, load), speed(s), seat(seat), load(load) {}
    ~VAN() {}
    void show() {
        cout << "创建汽车(" << speed << "公里/小时)" << endl;
        cout << "创建客车(" << seat << "人)" << endl;
        cout << "创建货车(" << load << "吨)" << endl;
        cout << "客货两用车:" << speed << "公里/小时, " << seat << "人, " << load << "吨" << endl;
        cout << "销毁货车(" << load << "吨)" << endl;
        cout << "销毁客车(" << seat << "人)" << endl;
        cout << "销毁汽车(" << speed << "公里/小时)" << endl;
    }
private:
    double speed;
    double seat;
    double load;
};

main() 函数中,由于 pCAR 类型的指针,因此只能调用 CAR 类的 show() 函数。为了调用 VAN 类的 show() 函数,需要将 p 的类型改为 VAN 类型的指针。修改后的 main() 函数如下:

int main() {
    VAN* p;
    double s, t, w;
    cin >> s >> t >> w;
    p = new VAN(s, t, w);
    p->show();
    delete p;
    return 0;
}

这样修改后,程序就可以输出 VAN 类的信息了。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^