内存释放,申请与析构,构造函数
这几个函数的执行顺序是什么,我们已经知道对于普通的对象,会先执行内存申请函数,然后执行构造函数,然后执行析构函数,最后执行内存释放函数。
但是,对于有继承关系的对象,他们的执行顺序是什么呢?下面以一个例子说明:
#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"&l