在 C++ 中创建一个类对象分为静态和动态,一种是静态建立,如 A a, 一种是动态建立 A * a = new A;
他们的区别如下:
静态建立类对象:是由编译器在栈空间为对象分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象,使用这种方法,直接调用类的构造函数
动态建立类对象:是使用 new 运算符将对象建立在堆空间中。这个过程分为两步,第一步先是执行 operator new() 函数,在堆空间中搜索合适的内存并进行分配;第二步才调用构造函数构造对象,初始化这片内存空间。这种方法,间接调用类的构造函数
1、只能在栈上创建
如果让对象只能在栈上创建,就不能调用 operate new 函数,所以把他们设置为私有的访问权限就行了(全局函数 operator new 和 operator delete)
//设计一个类只能在栈上创建对象,
class B{
public:
B(){
}
~B(){
}
private:
void * operator new(size_t size){
}
void oper