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

MFC中有一个疑惑 C++中的奇怪用法,该如何解决

2014-05-31 
MFC中有一个疑惑 C++中的奇怪用法今天,我在调试MFC的时候,发现程序在进入WinMain之前,存在几个全局变量要

MFC中有一个疑惑 C++中的奇怪用法
今天,我在调试MFC的时候,发现程序在进入WinMain之前,存在几个全局变量要初始化。看书上只写了theApp。但是,我调试的时候发现,其实,它不是最早的。还有一个全局变量:THREAD_LOCAL(_AFX_THREAD_STATE, _afxThreadState)

  afxThreadState 是 AFX_THREAD_STATE 类型的对象。于是我找到构造函数,然而构造函数却有一下一句代码,让我百思不得其解:

  AFX_MODULE_STATE::AFX_MODULE_STATE(BOOL bDLL, WNDPROC pfnAfxWndProc,
DWORD dwVersion)
{
::new((void*)this) AFX_MODULE_STATE(bDLL, pfnAfxWndProc, dwVersion, FALSE);
}

我刚觉这段语法有问题,可它是MS的代码,所以我觉得应该有这种用法,于是模仿写了个 如下,可结果同不过编译,请问问题出在哪里?

C/C++ code
class MODULE_STATE{public:    MODULE_STATE(bool bDLL);    MODULE_STATE(bool bDLL, bool bSystem);    int m_nID;};MODULE_STATE::MODULE_STATE(bool bDLL, bool bSystem){}MODULE_STATE::MODULE_STATE(bool bDLL){    ::new((void*)this) MODULE_STATE(bDLL, false);} int main(int argc, char* argv[]){    return 0;}



[解决办法]
看看AFX_MODULE_STATE这个宏展开.
[解决办法]
new的三种用法。。
[解决办法]
不能再控制台下使用,要在MFC中使用
为什么我不晓得
[解决办法]
呃。

添加头文件的引用 #include <new>

这就是调用另一个构造函数而已,玩了个小把戏
你还可以用 this->MODULE_STATE::MODULE_STATE(false, false);这种方式来调用

热点排行