首页
社区
课程
招聘
[求助]CProcessLocal类的疑问
发表于: 2012-11-5 09:57 5177

[求助]CProcessLocal类的疑问

2012-11-5 09:57
5177
小弟在跟踪MFC的框架时,遇到了问题 先把CProcessLocal类粘贴在下面:
template<class TYPE>
class CProcessLocal : public CProcessLocalObject
{
// Attributes
public:
        AFX_INLINE TYPE* GetData()
        {
                TYPE* pData = (TYPE*)CProcessLocalObject::GetData(&CreateObject);
                ASSERT(pData != NULL);
                return pData;
        }
        AFX_INLINE TYPE* GetDataNA()
                { return (TYPE*)m_pObject; }
        AFX_INLINE operator TYPE*()
                { return GetData(); }
        AFX_INLINE TYPE* operator->()
                { return GetData(); }

// Implementation
public:
        static CNoTrackObject* AFXAPI CreateObject()
                { return new TYPE; }
};

全局的AfxGetModuleState函数里调用了这一句:        _AFX_THREAD_STATE*pState = _afxThreadState; 而_afxThreadState就是
CProcessLocal模板类的一个实例对象 当我F11跟进时,为什么会来到这一句:
        AFX_INLINE TYPE* operator->()
                { return GetData(); } 按理说应该进入这个类的构造函数,可是这里没有看到它的构造函数,却进入了这个操作符重载函数,请前辈为我解惑

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 14
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该是进入下面这个吧
AFX_INLINE operator TYPE*()
{ return GetData(); }

指针赋值,类型转换。
没有构造类不会进入构造函数的。
2012-11-5 18:10
0
雪    币: 32
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你说“应该”两个字,就是说我在说谎了  请你跟一下VC6的框架,再来回答问题
2012-11-6 08:53
0
雪    币: 14
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
。。。。不打击你,好心跟你说,妹的
自己2就以为。。。
AFX_INLINE ,编译优化的时候两个函数合在一起了。
连C++都不懂还谈框架
2012-11-6 19:42
0
游客
登录 | 注册 方可回帖
返回
//