c++09、虚函数
来源:互联网 发布:我的少女时代 知乎 编辑:程序博客网 时间:2024/06/04 01:09
虚函数是动态绑定的基础。动态绑定,也就是多态。当然如果分的细一点,又分为编译多态(模板)和运行多态(虚函数)。
#include <iostream>using namespace std;class Base // 基类Base的声明{public:virtual void show() { cout << "Base::show()" << endl; } // 虚成员函数show};class Child0 : public Base // 类Base的公有派生类Child0的声明{public:void show() { cout << "Child0::show()" << endl; } // 虚成员函数show};class Child1 : public Child0 // 类Child0的公有派生类Child1的声明{public:void show() { cout << "Child1::show()" << endl; } // 虚成员函数show};void CallShow(Base *pBase) // 一般函数,参数为基类指针{pBase->show();}int main(){Base base; // 声明Base类的对象Base *pBase; // 声明Base类的指针Child0 ch0; // 声明Child0类的对象Child1 ch1; // 声明Child1类的对象pBase = &base; // 将Base类对象base的地址赋值给Base类指针pBase 输出baseCallShow(pBase);pBase = &ch0; // 将Child0类对象ch0的地址赋值给Base类指针pBase 输出ch0CallShow(pBase);pBase = &ch1; // 将Child1类对象ch1的地址赋值给Base类指针pBase 输出ch1CallShow(pBase);return 0;}
运行结果:
注:经常遇到的疑问是,为什么不能声明虚构造函数?
答:多态是指不同的对象接收了同样的消息而导致完全不同的行为,它是针对对象而言的,虚函数是运行时多态的基础,当然也是针对对象的,
而构造函数是在对象生成之前调用的,即运行构造函数时还不存在对象,那么虚构造函数也就没有意义了。当然如果这样写了,正常情况下也不会通过编译。
0 0
- C/C++--虚函数
- 【C/C++】纯虚函数
- C/C++, 虚函数表
- C++:虚函数用途
- 虚函数详解(C++)
- 虚函数(C++)
- c++-->虚函数 2
- C++ 虚函数
- C++:虚函数
- C++_虚函数
- 【c++】虚函数
- 【C++】虚函数
- C++ 虚函数
- [C++]虚函数
- 虚函数 假多态 C++
- C/C++ 虚函数
- C++:虚函数理解
- C++---虚函数
- Spring-web中的web.xml为Servlet提供的配置选项说明
- 线程里弹DoModal框置顶以及禁止在处理DoModal框时MFC主界面最小化及对主界面进行操作 .
- C语言基础 定义并初始化三维的整型数组
- Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
- android 自定义控件(三) 进度条切换
- c++09、虚函数
- redis之zipmap
- C/C++中volatile关键字详解
- C语言基础 计算三维数组的页,行,列
- C++运算符重载
- CornerStone —— 医学影像显示的JavaScript库简介
- C++封装的高性能异步日志,cout实现方式
- 各大HotFix热补丁方案分析和比较
- SPFA的构图加判定 SGU 103