C++虚函数面试题(详解)
来源:互联网 发布:netstat监听端口 编辑:程序博客网 时间:2024/06/08 18:41
请阅读下述代码,写出程序执行的结果(6分)
#include <iostream>
using namespace std;
class CBase
{
public:
virtual void print()
{
cout<< "base" << endl;
}
void DoPrint()
{
print();
}
};
class CChild1: public CBase
{
public:
virtual void print()
{
cout<< "child1" << endl;
}
};
class CChild2: public CBase
{
public:
virtual void print()
{
cout<< "child2" << endl;
}
};
void DoPrint(CBase *base)
{
base->DoPrint();
}
void main()
{
CBase* base = new CBase();
CChild1* child1 = new CChild1();
CChild2* child2 = new CChild2();
DoPrint(child1);
/*
为什么打印出来是child1,因为虚函数的调用都是从虚函数列表中调用的,所以在DoPrintf()中执行 printf()时,是从虚函数表中查找的,在子类中,我们查到的是子类的printf(),所以输出child1。
*/
DoPrint(child2);
DoPrint(base); // 比较好理解,直接调用父类的函数。
delete base;
base = child1;
base->print(); // 传统的虚函数的用法。
delete child1;
delete child2;
}
child1
child2
Base
child1
- C++虚函数面试题(详解)
- C++虚函数面试题(详解)
- C语言面试题---函数(一)
- C语言面试题---函数(二)
- C/C++面试题详解
- 虚函数面试题
- 【C/C++】面试题:函数指针
- [Oracle面试题]Oracle分析函数详解
- GetMemory函数详解 (360面试题)
- C语言实现单链表---面试题详解
- c语言sizeof面试题详解
- 面试题总结 - C 语言 - 函数(function)
- c语言面试题---main函数
- c面试题(1)
- C语言再学习 -- 详解C++/C 面试题 1
- C语言再学习 -- 详解C++/C 面试题 2
- C语言再学习 -- 详解C++/C 面试题 2
- C语言再学习 -- 详解C++/C 面试题 2
- activemq 启动错误
- 九月十月百度人搜,阿里巴巴,腾讯华为笔试面试八十题(第331-410题)
- 去IOE:去掉“IE”就Ok?
- Linux上程序调试的基石(2)--GDB
- JVM调优总结(三)-基本垃圾回收算法
- C++虚函数面试题(详解)
- JVM调优总结(四)-垃圾回收面临的问题
- Linux监控工具
- JVM调优总结(五)-分代垃圾回收详述1
- 国外经典计算机以及相关领域电子书,下载地址
- 【Android 开发】:数据存储之 SQLite 数据库操作(一)
- [问题解决]delphi dpk编译 Error: E2161 RLINK32: Unsupported 16bit resource in file xxx 问题解决
- 再见大学
- 关于Ubuntu12.04 安装JAVA7时需要安装的更新命令