静态返回值问题
来源:9-3 static和单例模式的实现
duye123456
2021-08-03
const Singleton* Singleton::getInstance()
{
if(!This)
{
This = new Singleton();
}
return This;
}
想请问老师,这里返回的类型为什么不是Singleton*&呢? 我理解的是这里返回的是一个栈上的临时指针变量而不是前面定义的私有的静态指针变量,那这时这个私有的作用域还起作用吗?这两种返回方式哪个更好呢?
写回答
1回答
-
quickzhao
2021-08-03
你理解的有问题。这里返回指针就可以了,没必要返回指针的引用,引用本身只是一种特殊的指针。这里返回的时不是栈上临时变量,static的指针是全局范围内可用的。这里真正不好的地方在于没有一个地方去delete这里指针,也没有考虑多线程问题,所以更好的单例实现其实是不用new来实现。
00
相似问题