C++ 虚析构函数
来源:互联网 发布:征途2怎么延时网络 编辑:程序博客网 时间:2024/05/20 09:47
1.对于一个空类型,sizeof求得的结果是1
这就是实例化的原因(空类同样可以被实例化),每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址,所以空类所占的内存大小是1个字节。
一旦类中有其他的占用空间成员,则这1个字节就不在计算之内。
增加了构造函数和析构函数后:
由于构造函数和析构函数的调用与类型的实例无关(调用它们只需要知道函数地址即可),在它的实例中不需要增加任何信息。
将析构函数改为虚析构函数后:
class C在class B的基础上把析构函数标注为虚拟函数。C++的编译器一旦发现一个类型中有虚拟函数,就会为该类型生成虚函数表,并在该类型的每一个实例中添加一个指向虚函数表的指针。在32位的机器上,一个指针占4个字节的空间,因此sizeof(C)是4。
#include <iostream>using namespace std;class A{public: A(); virtual ~A();};int main(){ cout << sizeof(A) << endl; return 0;}
2.C++用作基类的类的析构函数一般都是虚函数,这样做是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。
并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。
阅读全文
0 0
- C++-----虚析构函数
- C++----虚析构函数
- C++【浅谈虚析构函数】
- C++_虚析构函数
- 【c++】虚析构函数
- (C++)虚析构函数
- C++---------之--------【虚析构函数】
- 【C/C++】C++虚析构函数的作用
- [C/C++]C函数
- 【C++】正确使用虚析构函数
- c++------------之---【虚析构函数应用】
- <C++>析构函数、虚析构函数和构造函数
- c 函数
- C函数
- C 函数
- C函数
- 【C++】函数
- C 函数
- session 存储登录信息,超5次等待1分钟
- iview组件使用总结
- C语言——产生一个随机字符或者随机数
- 打印两个有序链表的公共部分
- java线程
- C++ 虚析构函数
- NOIP 模拟题 消失的数字
- Android压力测试三 MonkeyRunner
- linux学习
- C++开源代码项目
- C# Eval在asp.net中的用法及作用
- 顺序表应用3:元素位置互换之移位算法
- Oracle批量操作(基于Mybatis的实现)
- Mediaplayer实现音乐播放器,支持后台播放