首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++实现单例模式的一个例子,有些不明白的地方解决方案

2012-03-07 
C++实现单例模式的一个例子,有些不明白的地方C/C++ code#include string.h#include iostream.hclass S

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

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

热点排行