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);这种方式来调用