C++笔记1: 单例模式。(一个简单的设计模式在C++中复杂出翔。。)
2014-04-02 21:36
411 查看
C++ 如果用指针new一个单例,内存不容易释放,所以Java和C#等语言中的单例模式在C++不适用。。。
C++中,new申请的内存必须由delete释放,例如:
这里p1没有用new创建,不用delete释放,程序结束后会自动释放,而p2用new创建,必须有对应的delete来释放。
所以单例模式中,我们可以用p1这种方式:
注意!!
一定要在类外面加上一句:
类中只是声明,类外面才是定义。
C++真心复杂出翔。。。
C++中,new申请的内存必须由delete释放,例如:
Point p1; Point *p2 = new Point();
这里p1没有用new创建,不用delete释放,程序结束后会自动释放,而p2用new创建,必须有对应的delete来释放。
所以单例模式中,我们可以用p1这种方式:
class Point { public: static Point *getInstance() { return &instance; } private: Point() { } static Point instance; //这样创建,不用delete释放,线程也安全。 };
注意!!
一定要在类外面加上一句:
Point Point::instance;
类中只是声明,类外面才是定义。
C++真心复杂出翔。。。
相关文章推荐
- C++设计模式学习笔记一:简单工厂模式
- 设计模式---单件(C++版) 一个简单实例(避免用户忘记delete单件实例)
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的WCF分层结构示例Step by Step —— 05 Contracts
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式C++学习笔记之三(Singleton单例模式)
- 设计模式(c++)笔记之十六(Observer模式)
- 设计模式(c++)笔记之十七(Memento模式)
- 设计模式C++学习笔记之三(Iterator迭代器模式)
- 设计模式C++学习笔记之一(Observer观察者模式)
- 设计模式C++学习笔记之十四(Iterator迭代器模式)
- 设计模式C++版:第零式简单工厂
- 设计模式 -- 简单工厂模式 -- c++实现
- 设计模式C++学习笔记之一(Strategy策略模式)
- 一个牛人的笔记--算法,设计模式
- 设计模式学习笔记(一) 简单工厂
- c++设计模式之简单工厂
- 设计模式笔记4:简单工厂模式(Simple Factory Pattern)
- 简单工厂设计模式C++实现
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式C++学习笔记之三(Singleton单例模式)