C++ 什么是(新类())->Function();意思是

C++ 什么是(新类())->Function();意思是,c++,visual-c++,syntax,C++,Visual C++,Syntax,我在MS.的一位员工的博客上看到过这个表格,但它是什么意思?我很困惑,因为他在使用新操作符后没有删除。这完全合法吗?或者只能在Visual C++ + < /P>中使用? 源代码来自他的博客: (new RegForm())->ShowMaximized(); GetApplication()->Run(); 首先,新事物是合法的,不能删除它们。它可能导致内存泄漏,但C++中允许使用。 在这段特定的代码中,new生成指向对象的指针。您可以在指针上使用->来调用对象的成员函数,因此这

我在MS.的一位员工的博客上看到过这个表格,但它是什么意思?我很困惑,因为他在使用新操作符后没有删除。这完全合法吗?或者只能在Visual C++ + < /P>中使用? 源代码来自他的博客:

(new RegForm())->ShowMaximized();
GetApplication()->Run();
首先,新事物是合法的,不能删除它们。它可能导致内存泄漏,但C++中允许使用。 在这段特定的代码中,new生成指向对象的指针。您可以在指针上使用->来调用对象的成员函数,因此这将创建RegForm,然后在其上调用ShowMaximized

我们无法从这段代码判断是否存在内存泄漏。然而,RegForm可能使用某种自注册模式。例如,其构造函数可能包含:

GlobalListOfObjectsToDeleteLater.push_back(this);
当应用程序关闭时,另一段代码将通过列表删除所有内容

事实上,似乎RegForm会在GUI的其他部分注册自己,它必须这样做才能显示自己。

它与

RegForm* pForm = new RegForm();
pForm->ShowMaximized();

在节目结束前删除所有新闻,没有严格的规定。程序员应该知道自己在做什么,特别是在重复性任务中避免内存泄漏。顺便说一下,当应用程序退出时,所有的内存都将是干净的。

它是有效的C++,但可能是潜在的泄漏。或者,有可能RegForm实例应该在整个程序期间都有效,而他选择这样编写。没有更多的上下文,就不能说更多。