链接力扣
总结:
创建对象的两种方式:堆创建(使用new创建)和栈创建(一般创建)
限制对象只能堆创建:
可以在对象外面使用new创建:析构函数设置为私有。 存在问题:(1). 无法直接在类外部delete释放对象。(2). 析构函数定义成虚函数时无法在子类中重写(解决: 析构函数设为protected)。
不在对象外使用new创建:将构造函数和析构函数全部设为protected通过调用成员函数动态创建和删除。
1和2本质上是同一种方法:将构造函数或析构函数(分别或同时)设为private或protected。
限制对象只能栈创建:
重载operator new()和operator delete()为private。