静态返回值问题

来源: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来实现。

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程