描述

下面程序的输出结果是:

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函数。

6w4:第六周程序填空题1的更多相关文章

  1. 6w6:第六周程序填空题3

    描述 下面的程序输出结果是: A::Fun A::Do A::Fun C::Do 请填空: #include <iostream> using namespace std; class A ...

  2. 6w5:第六周程序填空题2

    描述 下面程序的输出结果是: destructor B destructor A 请完整写出 class A. 限制条件:不得为 class A 编写构造函数. #include <iostre ...

  3. 程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1

    描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...

  4. 9w5:第九周程序填空题1

    描述 下面的程序输出结果是: 1 2 6 7 8 9 请填空: #include <iostream> #include <iterator> #include <set ...

  5. 5w5:第五周程序填空题1

    描述 写一个MyString 类,使得下面程序的输出结果是: 1. abcd-efgh-abcd- 2. abcd- 3. 4. abcd-efgh- 5. efgh- 6. c 7. abcd- 8 ...

  6. HDU2669 第六周练习I题(扩展欧几里算法)

    第六周练习I题 I - 数论,线性方程 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  7. 第十六周oj刷题——Problem J: 填空题:静态成员---计算学生个数

    Description 学生类声明已经给出.在主程序中依据输入信息输出实际建立的学生对象个数,以及全部学生对象的成绩总和. Input 学生个数 相应学生个数的学生信息(姓名    年龄    成绩) ...

  8. 第十六周oj刷题——Problem E: B 构造函数和析构函数

    Description 在建立类对象时系统自己主动该类的构造函数完毕对象的初始化工作, 当类对象生命周期结束时,系统在释放对象空间之前自己主动调用析构函数. 此题要求: 依据主程序(main函数)和程 ...

  9. 第十六周oj刷题——Problem I: 改错题:类中私有成员的訪问

    Description 改错题: 设计一个日期类和时间类,并编写全局函数display用于显示日期和时间. 要求:display函数作为类外的普通函数,而不是成员函数 在主函数中调用display函数 ...

随机推荐

  1. Cassandra学习五 使用Key的正确姿势

    NoSQL一般是反范式的,比如提倡数据冗余,使得不至于写出非常复杂的SQL语句. Cassandra之中一共包含下面5中Key: Primary Key: 用来获取某一行的数据,可以是一列或多列   ...

  2. 免费SSL证书 - Let's Encrypt申请(WINDOWS + IIS版)

    Let’s Encrypt 项目是由互联网安全研究小组ISRG,Internet Security Research Group主导并开发的一个新型数字证书认证机构CA,Certificate Aut ...

  3. Python之购物商场

    作业:购物商场 1.流程图 2.初始化用户账号存储文件 初始化存储一个空的用户账号字典,保存到文件 user.pkl.执行如下代码,即可初始化完成. #!/usr/bin/env python # - ...

  4. maven项目如何启动运行---发布到tomcat中

    前面两篇文章: 新建maven框架的web项目 以及 将原有项目改成maven框架 之后,我们已经有了maven的项目 那么 maven项目到底怎么启动呢 如果我们直接在myeclipse中按以前的启 ...

  5. Java之常用类及方法

    下面我们介绍Java类库所提供的常用类及类的常用方法 一.java.lang.String 1. String类常用的构造函数 public String(String original) 使用串对象 ...

  6. 电商模式O2O、C2C、B2B、B2C

    电商模式O2O.C2C.B2B.B2C o2o o2o 是 online to offline 分为四种运营模式 1.online to offline 是线上交易到线下消费体验 2.offline ...

  7. C++中使用TCP传文件

    在两个文件中都定义文件头和用到的宏: #define MAX_SIZE 10 #define ONE_PAGE 4096 struct FileHead { ]; int size; }; 在客户端发 ...

  8. as+bt=1是ab两数互质的充要条件

    [as+bt=1是ab两数互质的充要条件] 充分性,as+bt=1 => (a,b)=1: 因为as+bt=1,设c=(a,b),则c整除a和b,所以c整除as+bt,即c整除1,所以c=1,即 ...

  9. Java 基于spring 暴露接口 供外部调用

    在springmvc的配置文件添加创建如下的bean: <!-- 暴露一个webService连接 --> <bean class="org.springframework ...

  10. 在CentOS7.5里安装FTP服务器

    安装了一台CentOS7.5,字符界面,为方便上传文件到这台机器上,拟采用FTP服务上传和下载文件,在CentOS上搭建vsftpd服务环境. 记录我的安装过程,供有需要的人参考. 一.系统环境 1. ...