读书人

C++实现单例模式的一个例子有些不明

发布时间: 2012-03-07 09:13:51 作者: rapoo

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()
{

。。。。要返回引用啊。
[解决办法]
拷贝构造,编译器优化

读书人网 >C++

热点推荐