gpt4 book ai didi

c++ - 为什么 “delete *this” 会编译?

转载 作者:可可西里 更新时间:2023-11-01 17:36:48 27 4
gpt4 key购买 nike

我正在从 MFC CDialogEx 派生一个类:

class MyDialog : public CDialogEx
{
public:
virtual void PostNcDestroy();


};

我实现了PostNcDestroy as such :

void MyDialog::PostNcDestroy()
{
CDialogEx::PostNcDestroy();
delete *this; // oops, typo
}

我很惊讶地看到这段代码编译(使用 VC120 或 Visual Studio 2013),并且根本没有生成任何警告。谁能告诉我为什么会这样?

谢谢。

最佳答案

这是一个隐式转换; CWnd类有一个operator HWND()转换函数,HWND是一个指针类型。

删除 HWND 是一个错误,但编译器不知道,也无法警告您。

关于c++ - 为什么 “delete *this” 会编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36692605/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com