我是 MFC 的新手,想出了这两个片段。它们看起来不同,但都有效,我只是不明白为什么? 帮助。非常感谢。
//片段 1
BOOL CMainApp::InitInstance()
{
CMainFrame *wnd = new CMainFrame();
m_pMainWnd = wnd;
wnd->ShowWindow(SW_SHOW);
wnd->UpdateWindow();
return true;
}
//片段 2
BOOL CMainApp::InitInstance()
{
CMainFrame wnd;
wnd.ShowWindow(SW_SHOW);
wnd.UpdateWindow();
return true;
}
最佳答案
这只是静态分配对象和动态分配对象之间的区别,以及指针的工作方式。
您的第一个代码段动态分配一个新的 CMainFrame
对象,它是默认构造的。它在内存中的地址存储在指针wnd
中。 ,然后在成员变量m_pMainWnd
.然后调用 ShowWindow
和 UpdateWindow
在 wnd
指向的对象上
在片段二中,您静态分配了一个 CMainFrame
函数局部对象,然后调用 ShowWindow
和 UpdateWindow
在那个物体上。
请注意,虽然存在差异 - 在第一个片段中 CMainFrame
对象存在于函数末尾之外;在第二个中,它在函数返回时被销毁。
关于c++ - 接下来的两个片段有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20993553/