C++笔记1: 单例模式。(一个简单的设计模式在C++中复杂出翔。。)

C++ 如果用指针new一个单例,内存不容易释放,所以Java和C#等语言中的单例模式在C++不适用。。。

C++中,new申请的内存必须由delete释放,例如:

1 Point p1;
2 Point *p2 = new Point();

这里p1没有用new创建,不用delete释放,程序结束后会自动释放,而p2用new创建,必须有对应的delete来释放。

所以单例模式中,我们可以用p1这种方式:

 1 class Point
 2 {
 3 public:
 4     static Point *getInstance()
 5     {
 6         return &instance;
 7     }
 8 
 9 private:
10     Point()
11     {
12     }
13 
14     static Point instance; //这样创建,不用delete释放,线程也安全。
15 };

注意!!
一定要在类外面加上一句:

Point Point::instance;

类中只是声明,类外面才是定义。


C++真心复杂出翔。。。

原文地址:https://www.cnblogs.com/wolfred7464/p/3641645.html