读书人

单例模式求解释解决思路

发布时间: 2013-04-02 12:35:26 作者: rapoo

单例模式,求解释
template<typename T> class CSingleton
{
static T* m_instance;
public:
CSingleton()
{
int off1=(int)(T*)1;
int off2=(int)(CSingleton<T>*)(T*)1;
int off=off1-off2;
m_instance=(T*)((int)this+off);
}
...
}

开发环境VC,单例模式为啥这样写?
[解决办法]

引用:
template<typename T> class CSingleton
{
static T* m_instance;
public:
CSingleton()
{
int off1=(int)(T*)1;
int off2=(int)(CSingleton<T>*)(T*)1;
int off=off1-off2;
m_instance=(T*)(……

自以为是的人才这么写,以为自己对底层很了解,其实这种代码就是垃圾。你不要被误导了。平时看的设计模式那些书上怎么教你的,你还怎么写。《C++设计新思维——泛型编程与设计模式之应用》上也有提到呢~
如果你想搞懂这什么意思,要看《深入探索C++对象模型》,侯捷老师翻译的。
[解决办法]
补充一下11楼的示例:

template<typename T>
class CSingleton
{
static T* m_instance;

public:

CSingleton( T* p )
{
m_instance = p;
}
};

class CChildClass : public CSingleton< CChildClass >
{
public :

CChildClass( ) : CSingleton< CChildClass >( this ) {}
};

读书人网 >C++

热点推荐