没有名字的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 统计大规模图中的完全子图问题
  • ¥15 使用LM2596制作降压电路,一个能运行,一个不能
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 经gamit解算的cors站数据再经globk网平差得到的坐标做形变分析
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错
  • ¥20 @microsoft/fetch-event-source 流式响应问题
  • ¥15 ogg dd trandata 报错
  • ¥15 高缺失率数据如何选择填充方式