程序设计与算法(三)第06周测验001 看上去像多态
【摘要】
程序设计与算法(三)第06周测验001 看上去像多态
本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第六周测验。本课程学习的github仓库欢迎Fork
总时间限制: 1...
程序设计与算法(三)第06周测验001 看上去像多态
本文是中国大学MOOC,北京大学程序设计与算法(三)C++面向对象程序设计第六周测验。本课程学习的github仓库欢迎Fork
-
总时间限制:
1000ms
-
内存限制:
65536kB
-
描述
程序填空产生指定输出
#include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal="<< nBVal << endl; } void Fun() {cout << "B::Fun" << endl; } B ( int n ) { nBVal = n;} }; // 在此处补充你的代码 int main() { B * pb; D * pd; D d(4); d.Fun(); pb = new B(2); pd = new D(8); pb -> Fun(); pd->Fun(); pb->Print (); pd->Print (); pb = & d; pb->Fun(); pb->Print(); return 0; }
-
输入
无
-
输出
D::Fun B::Fun D::Fun nBVal=2 nBVal=24 nDVal=8 B::Fun nBVal=12
先看主函数:
int main() {
B * pb; D * pd; //定义了B类对象pb,D类对象pd
D d(4); d.Fun(); //构造函数D.d()
pb = new B(2); pd = new D(8);
pb -> Fun(); pd->Fun(); //函数Fun()
pb->Print (); pd->Print (); //函数Print()
pb = & d; pb->Fun();
pb->Print();
return 0;
}
再看看类定义
class B {
private:
int nBVal;
public:
void Print()
{ cout << "nBVal="<< nBVal << endl; }
void Fun()
{cout << "B::Fun" << endl; }
B ( int n ) { nBVal = n;}
};
所以我们要写一个D
类,这个类应该是B类的派生类。因为两个类的函数名都一样。
再看看输出:
D::Fun //d.Fun()输出
B::Fun //pb-->Fun()
D::Fun //pd-->Fun()
nBVal=2 //pb-->Print()
nBVal=24
nDVal=8
B::Fun //pb-->Fun()
nBVal=12 //pb-->Print()
nBVal=24
与 nDVal=8
有点迷。
根据程序执行的顺序与输出对应,我们猜测pd-->Fun()
应该会调用一次B
类的Print()
所以,接下来就清楚了。我们可以这样写。
class D:public B
{
private:
int nDVal;
public:
void Fun()
{
cout << "D::Fun" << endl;
}
void Print()
{
B::Print();
cout << "nDVal=" << nDVal << endl;
}
D(int nDval_) :nDVal(nDval_),B(3*nDval_){};
};
提交,通过。
文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/CANGYE0504/article/details/105351065
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)