没有名字的c 2022-01-07 14:04 采纳率: 88.2%
浏览 56
已结题

能解释一下每个错误的空为什么这么改吗?求解,明天要考试了

更正后程序的输出应该是:

 MyClassB::show()

 MyClassB::show()

[程序]

#include

#include

using namespace std;

class MyClassA{ // 基类

public:

MyClassA()

{

   strcpy(str,"MyClassA::show()");

}

//ERROR**********found**********

void show()const

{

   cout<<str<<endl;

}

private:

char str[100];

};

class MyClassB:public MyClassA{ // 派生类

public:

MyClassB()

{

   strcpy(s,"MyClassB::show()");

}

void show()const

{

   cout<<s<<endl;

}

private:

char s[100];

};

//ERRORfound

void fun(MyClassA t)

{

t.show();

}

int main()

{

MyClassB tb;

fun(tb);

MyClassA *ta=&tb;

//ERROR**********found**********

ta.show();           // 通过ta调用show()

system("pause");

return 0;

}

正确答案:

第一空:
virtual void show()const;void virtual show()const

第二空:
void fun(MyClassA & t)

第三空:
ta->show();

  • 写回答

1条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-01-07 15:14
    关注

    第一空:
    void show()const;改为virtual void show()const;
    基类和派生类同时出现void show()const;相同函数,在基类加virtual,是多态的一种体现,具体来说:定义一个函数为虚函数,不代表函数为不被实现的函数。定义它为虚函数是为了允许用基类的指针来调用子类的这个函数。
    第二空:
    void fun(MyClassA t)改为void fun(MyClassA & t)
    主函数 fun(tb); 传参 传的为tb MyClassB创建出的对象 此处 加&引用
    第三空:
    ta.show();---->改为ta->show();
    MyClassA *ta=&tb;
    指针调用 采用->
    希望对题主有所帮助,望采纳!!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测