成员函数中调用虚函数
来源:互联网 发布:jquery.cookie.js用法 编辑:程序博客网 时间:2024/05/21 08:06
#include <iostream>
using namespace std;
class A
{
public:
A(){cout<<"A's cons."<<endl;}
virtual ~A(){cout<<"A's des."<<endl;}
virtual void f(){cout<<"A's f()"<<endl;}
void g(){f();}
};
class B:public A
{
public:
B(){f(); cout<<"B's cons."<<endl;}
~B(){cout<<"B's des."<<endl;}
};
class C:public B
{
public:
C(){cout<<"C's cons."<<endl;}
~C(){cout<<"C's des."<<endl;}
void f(){cout<<"C's f()."<<endl;}
};
void main(){
A *a = new C;
a->g();
delete a;
using namespace std;
class A
{
public:
A(){cout<<"A's cons."<<endl;}
virtual ~A(){cout<<"A's des."<<endl;}
virtual void f(){cout<<"A's f()"<<endl;}
void g(){f();}
};
class B:public A
{
public:
B(){f(); cout<<"B's cons."<<endl;}
~B(){cout<<"B's des."<<endl;}
};
class C:public B
{
public:
C(){cout<<"C's cons."<<endl;}
~C(){cout<<"C's des."<<endl;}
void f(){cout<<"C's f()."<<endl;}
};
void main(){
A *a = new C;
a->g();
delete a;
}
输出:
A's cons.
A's f()
B's cons.
C's cons.
C's f().
C's des.
B's des.
A's des.
构造函数和析构函数中调用虚函数采用静态联编,成员函数中调用虚函数采用动态联编。
- 成员函数中调用虚函数
- 成员函数调用虚函数
- 构造函数调用成员函数&成员函数是虚函数
- 构造函数中调用虚成员函数问题
- 在成员函数中调用构造函数
- 多线程中成员函数的调用
- C++中成员函数调用数据问题
- 类中成员函数调用问题
- 全局函数调用成员函数
- 类成员函数调用
- 线程调用成员函数
- 调用成员函数
- 成员函数调用
- 成员函数调用
- 成员函数指针数组,处理函数中调用:
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
- 虚函数以及c++成员函数的调用原理
- 虚函数与调用和重写基类成员函数
- OpenMP: OpenMP和MPI是并行编程
- 菜鸟发现的java7和java6中一点的不同
- hdu1757 快速幂
- 新浪微博开发时使用request拿不到数据原因分析(转载别人的,这个文章 写的很好,很透彻....)
- 百度地图之7公交换乘方案搜索(Android) .
- 成员函数中调用虚函数
- POSIX消息队列
- WPARAM 和 LPARAM的区别
- C++
- ftp简单配置
- C# 根据字体高度变化的textBox
- 请求发送者与接收者解耦——命令模式(三)
- 百度地图8之城市POI搜索-获取所有结果(Android)
- 第六次课后作业