C++实现单例模式的一个例子,有些不明白的地方解决方案
C++实现单例模式的一个例子,有些不明白的地方
写了一个实现单例的类,但是我在主函数中获取两次实例,却是不同的实例?输出了不同的值。
我又输出了p和p1两个指针的地址,也是不同的值。
------解决方案--------------------
static SingletonClass getInstance()
{
。。。。要返回引用啊。
------解决方案--------------------
拷贝构造,编译器优化
- 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()
{
。。。。要返回引用啊。
------解决方案--------------------
拷贝构造,编译器优化