关于指针:C ++中的单例模式

Singleton pattern in C++

我是一个新的,有点无知的C++,我遇到了一个C++代码,使用一个单独的模式,

1
2
3
4
5
6
7
8
9
10
11
12
13
class CFoo
{
 public:
   static CFoo& getInstance()
   {
     static CFoo self;
     return self;
   }

 private:
   CFoo(){}
   ~CFoo(){}
};

我只是很困惑为什么要返回静态引用?这是有效的代码吗?为什么程序员不使用指针?


为什么要使用指针?引用很简单,并且与我想做的匹配:为对象加别名,而不是指向它。static不适用于引用,它适用于函数,使其可以在没有实例的情况下调用。

(更好的是,为什么要用单件的?)


一个静态局部变量,如self一旦初始化(第一次通过函数getinstance),在程序的整个过程中保持不变,除非明确删除。因此,将引用返回到self是完全安全的。

注意,它是getInstance,在函数声明中是静态的。函数的返回类型不允许使用存储类说明符。

我建议你使用单态设计模式,当然除非强烈建议需要单态


如果使用指针,则必须取消对指针的引用,以便使用由cfoo实现的任何重载运算符。如果它返回一个指针,代码可能如下所示:

1
(*(CFoo::getInstance ())) =="comparison overloaded op"

VS

1
CFoo::getInstance () =="comparison overloaded op"