创建的对象只能在栈区
关闭对new的重载接口
class A {
void* operator new(size_t) = delete;
void* operator new[](size_t) = delete;
};
创建的对象位置只能在堆区
栈区的对象析构不了,编译出错,堆区需要手动释放,所以没问题
#include<iostream>
class A {
~A() { std::cout << "析构"; }
public:
int a;
void free(A* ptr) {
delete this;
ptr = nullptr;
}
};
int main() {
A* a = new A;
a->free(a);
}
创建对象的位置只能在全局区的话:单例模式