簡體   English   中英

(新的Class())-> Function(); 意思?

[英]What does (new Class())->Function(); mean?

我已經在MS一名員工的博客中看到此表格。 但是這是什么意思? 我很困惑,因為他在使用new運算符后沒有刪除 那是完全合法的嗎? 還是只能在Visual C ++中使用?

他博客的源代碼:

(new RegForm())->ShowMaximized();
GetApplication()->Run();

首先,對new事物是合法的,而不是刪除它們。 這可能會導致內存泄漏,但是在C ++中是允許的。

在這段特定的代碼中, new生成指向對象的指針。 您可以在指針上使用->來調用對象的成員函數,因此這將創建RegForm,然后在其上調用ShowMaximized

我們無法通過此代碼判斷是否存在內存泄漏。 但是RegForm可能正在使用一種自注冊模式。 例如,其構造函數可能包含:

GlobalListOfObjectsToDeleteLater.push_back(this);

當應用程序關閉時,另一段代碼將通過列表刪除所有內容。

實際上,RegForm似乎在GUI的其他部分進行了注冊,因此必須這樣做才能顯示出來。

完全一樣

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

沒有嚴格的規則要求在程序結束前刪除所有new s。 程序員應該知道自己的工作,並避免內存泄漏(特別是在重復性任務中)。 順便說一句,當應用程序exit時,所有內存將被清除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM