6w4:第六周程序填空题1
程序 填空题
2023-09-11 14:22:45 时间
描述
下面程序的输出结果是:
A::Fun
C::Do
请填空:
#include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; } void Do() { cout << "A::Do" << endl; } }; class B:public A { public: virtual void Do() { cout << "B::Do" << endl; } }; class C:public B { public: void Do( ) { cout << "C::Do" <<endl; } void Fun() { cout << "C::Fun" << endl; } }; void Call(
// 在此处补充你的代码
) { p.Fun(); p.Do(); } int main() { C c; Call(c); return 0; }
输入无输出A::Fun
C::Do样例输入
无
样例输出
A::Fun C::Do
Code:
#include <iostream> using namespace std; class A { private: int nVal; public: void Fun() { cout << "A::Fun" << endl; } void Do() { cout << "A::Do" << endl; } }; class B:public A { public: virtual void Do() { cout << "B::Do" << endl; } }; class C:public B { public: void Do( ) { cout << "C::Do" <<endl; } void Fun() { cout << "C::Fun" << endl; } }; void Call( // 在此处补充你的代码 B& p ) { p.Fun(); p.Do(); } int main() { C c; Call(c); return 0; }
Analysis:
随便写了一下就提交了,没想到能过。
main中Call中的实参是C类的引用,但是根据输出的结果来看,Call函数中并不是传入C类的对象。就三个类,一个一个的试也能使出结果来。
之所以填B类的引用是因为B类中有一个虚函数Do()但是没有Fun函数,所以在Call中调用Fun函数是会调用B的基类(A类)的Fun函数。调用Do时,因为B类中有一个Do的虚函数,调用用的时候会使用到多态的机制,因为传进来的是C类的对象所以调用时调用C类中的Do函数。
相关文章
- 计算机等级考试二级C语言程序设计专项训练题——程序填空题(一)
- PHP实现程序单例执行
- 小程序-优化,部署,细节功能
- 实现返回顶部-wepy小程序-前端梳理
- 小程序单选按钮
- 《Java编码指南:编写安全可靠程序的75条建议》—— 指南10:不要使用clone()方法来复制不可信的方法参数
- 微信小程序error message Cannot find module ‘wx-server-sdk‘; at cloud.callFunction api
- 使用fatjar来实现将包括第三方jar包的项目到处成一个jar包供其它程序使用
- 内存管理--分发您的程序存储器
- 【Python杂记】:课程表生成日历程序(生成.ics文件可直接导入日历)
- windows程序消息机制(Winform界面更新有关)