c++中的虚函数详解
来源:互联网 发布:北京房价 知乎 编辑:程序博客网 时间:2024/06/05 02:56
//废话少说直接上代码,用一个测试来阐述虚函数:
#include<iostream>
#include<stdlib.h>using namespace std;
//有虚函数的类
class A
{
public:
A();
~A();
virtual void f(){
cout<<"this is A f()"<<endl;
}
virtual void g()
{
cout<<"this is A g()"<<endl;
}
private:
int _a;
};
class B:public A
{
public:
B();
~B();
void g()
{
cout<<"this is B g()"<<endl;
}
private:
int _b;
};
B::B()
{
}
B::~B()
{
}
A::A()
{
}
A::~A()
{
}
int main()
{
B b;
A a;
b.f();
b.g();
cout<<"sizeof(a):"<<sizeof(a)<<endl;//_a,虚指针
cout<<"sizeof(b):"<<sizeof(b)<<endl;// _a,_b ,虚指针
cout<<"sizeof(A)"<<sizeof(A)<<endl;//
cout<<"sizeof(B)"<<sizeof(B)<<endl;//
system("pause");//
return 0;//
}
/*
每个含有虚函数的类中有一个虚函数表,其中每一项都是虚函数的地址。
*/
打印结果依次是:
this is A f()
this is B g()
sizeof(a):8
sizeof(b):12
sizeof(A)8
sizeof(B)12
结果解释:
第一行:类B继承自A调用A的方法:f();
第二行:类B继承A但是重写了A的方法,所以调用的是自身的g();方法
第三到六行:含有虚函数的类都包含一个虚函数表,这个虚函数表有一个指针指向它;表中存放的是虚函数的地址,当对象访问对象时,会通过指针进行寻址
0 0
- C中的printf函数详解
- 虚函数详解(C++)
- C语言中的system函数参数详解
- C 中的main函数的参数详解
- 详解C标准库中的atexit()函数
- C/C++中的freopen()函数使用详解
- 详解C语言中的fopen()函数和fdopen()函数
- C#(C Sharp)中的时间日期函数详解
- C中的malloc()函数和free()函数与C++中的new()函数和delete()函数详解
- C++中的虚函数详解
- C++中的虚函数详解
- c++中的虚函数详解
- [C++]C++中的虚函数
- C语言中的printf族函数深入详解
- C编程中的malloc()和free()函数使用详解
- C语言中的快速排序 qsort函数详解
- Python中的函数详解
- c#日期函数详解
- C++代码规范之命名规则
- TextView里面加图片
- 交换两个整型数的一些方法总结
- unity 打包到手机出现thread priority security exception
- 侧滑SlidingMenu
- c++中的虚函数详解
- Android Studio导入github下载的project和module的正确姿势
- 【HDU 1394】Minimum Inversion Number 【线段树 训练2】
- java获取cpu、内存、硬盘信息
- 剑指offer——数组中出现次数超过一半的数字
- 我的css笔记
- tableView,在didSelectRowAtIndexPath中,获取当前组和行
- bootstrap学习笔记(一)
- 前后端交互过程中的编码