C++实现单例模式的一个例子,有些不明白的地方
- C/C++ code
#include "string.h"#include "iostream.h"class SingletonClass{private: static SingletonClass instance; char Classname[30]; SingletonClass() { strcpy(Classname, "SingletonClass"); }public: char *getClassName() { return Classname; } static SingletonClass getInstance() { return instance; } void setClassName(char *p) { strcpy(Classname, p); }};SingletonClass SingletonClass::instance;int main(int argc, char *argv[]){ SingletonClass *p = &SingletonClass::getInstance();//获取实例的指针 cout<<"class name:"<<p->getClassName()<<endl; p->setClassName("123456"); cout<<"class name:"<<p->getClassName()<<endl; SingletonClass *p1 = &SingletonClass::getInstance();//再次获取实例的指针 cout<<"class name:"<<p1->getClassName()<<endl;//输出123456 cout<<"class name:"<<p->getClassName()<<endl;//输出SingletonClass return 0;}写了一个实现单例的类,但是我在主函数中获取两次实例,却是不同的实例?输出了不同的值。
我又输出了p和p1两个指针的地址,也是不同的值。
[解决办法]
static SingletonClass getInstance()
{
。。。。要返回引用啊。
[解决办法]
拷贝构造,编译器优化