首先需要知道的是:
class Stack
{
private:
~Stack();
};
int main()
{
Stack tmp; // complier error
// Stack *tmp = new Stack(); //complier right
}
代码会有编译的如下错误:

设置成protected, 目的是继承时的时候好调用。
因为new一个对象会调用operator new函数。所以把这个函数设置为private就可以了
class Stack
{
private:
static void* operator new(size_t size);
static void operator delete(void* ptr);
};
int main()
{
Stack tmp; //right
//Stack *tmp = new Stack(); //erro
}
代码会有编译的如下错误:

https://blog.csdn.net/weixin_52983138/article/details/124843666