c++ 内存申请释放,构造函数,析构函数,执行顺序
来源:互联网 发布:windows驱动器被锁定 编辑:程序博客网 时间:2024/05/21 02:53
内存释放,申请与析构,构造函数
这几个函数的执行顺序是什么,我们已经知道对于普通的对象,会先执行内存申请函数,然后执行构造函数,然后执行析构函数,最后执行内存释放函数。
但是,对于有继承关系的对象,他们的执行顺序是什么呢?下面以一个例子说明:
#include <iostream>class A{public: int a; void *operator new(std::size_t size){ std::cout<<"allocate A "<<size<<std::endl; ::operator new(size); } A(){ std::cout<<"constructor of A"<<std::endl; } void operator delete(void *ptr,std::size_t size){ //std::cout<<"deallocate b"<<std::endl; } ~A(){ //std::cout<<"deconstructor of A"<<std::endl; }};class B:public A{public: int b; int c; void *operator new(std::size_t size){ std::cout<<"allocate B "<<size<<std::endl; ::operator new(size); } B(){ std::cout<<"constructor of B"<<std::endl; } void operator delete(void *ptr,std::size_t size){ std::cout<<"deallocate a"<<std::endl; } ~B(){ std::cout<<"deconstructor of B"<<std::endl; }};int main(){ B *pb=new B(); delete pb; return 0;}/*output:allocate B 12constructor of Aconstructor of Bdeconstructor of Bdeallocate a*/
执行顺序一目了然。
0 0
- c++ 内存申请释放,构造函数,析构函数,执行顺序
- c 内存申请释放函数小结
- 构造函数与析构函数的顺序及动态内存的申请
- C++类对象在各种内存区的构造函数析构函数执行顺序
- 构造函数执行顺序
- 构造函数和析构函数的执行顺序
- 多重继承-构造函数与析构函数执行顺序
- C++构造函数与析构函数执行顺序
- 构造函数和析构函数的执行顺序相反
- C++中构造函数、析构函数的执行顺序
- C++中构造函数与析构函数执行顺序
- 关于构造函数和析构函数的执行顺序
- 构造函数与析构函数执行顺序
- C内存申请函数
- C申请内存函数
- 构造函数的执行顺序
- 构造函数的执行顺序
- c++ 构造函数执行顺序
- 有趣的通讯录—<静态版>
- 求最长等差数列长度
- Scheme
- Android学习笔记之AndroidManifest.xml文件解析
- 解决RecyclerView上拉加载、下拉刷新、Header和Footer的第三方解决方案
- c++ 内存申请释放,构造函数,析构函数,执行顺序
- Generate Parentheses
- Android分包(MultiDex)后编译加速方案
- [SDOI2011] [BZOJ2242] 计算器 - bsgs,快速幂,逆元,map/hash
- PIC单片机MPLAB V8设置技巧
- 关于iOS对textView字数限制上的一些坑以及解决方法
- 【颗粒归仓】(三)原生ajax和jquery-ajax方法的对比
- poj 2155 Matrix 二维树状数组
- [Leetcode] 292. Nim Game