作者:我是一只快乐的小鸟宝宝 | 来源:互联网 | 2023-02-05 21:51
1> NathanOliver..:
在尝试删除指针的情况下foo
如果使析构函数为私有,则会导致编译错误,因为析构函数不可访问.如果delete
在当时的成员或朋友中调用Singleton
它仍然会编译.那说尝试delete
一个未分配的指针new
是未定义的行为,所以我们应该尝试将它设置为用户甚至不小心尝试和调用的地方delete
.
你可以阻止这种方法的一种方法是返回一个引用而不是一个指针.这样你的用户甚至不会尝试调用,delete
因为他们正在处理非指针类型.
class Singleton
{
Singleton() {};
public:
static Singleton& getInstance();
};
Singleton& Singleton::getInstance()
{
static Singleton inst;
return inst;
}