簡體   English   中英

“ ClassName objName”是什么? objName(1);”是什么意思?

[英]What does “ClassName objName; objName(1);” mean?

我有以下代碼:

ClassName objName;
objName(1);

我應該怎么理解? 第一行是否使用不帶任何參數的構造函數創建一個對象(稱為objName並屬於ClassName類)? 然后第二行調用采用一個整數參數的構造函數? 因此,這實際上意味着在第二行中,我們銷毀了舊對象並創建了一個新對象?

第一行如您所說; 它創建一個ClassName類型的對象,並將其objName 它使用其默認構造函數(不帶參數)構造。

第二行正在為該類調用重載的operator() 這樣就可以像調用函數一樣調用它。 參數1被傳遞給該重載運算符。

這是一個例子:

struct foo
{
  operator()(int x) { std::cout << x * 2 << std::endl; }
};

foo類型是重載operator() int ,它接受一個int 然后將輸出的int乘以2的值打印出來。 這是其用法的示例:

foo f;
f(5); // Prints out 10
objName(1);

此行表示對於ClassName, operator ()已重載。

ClassName是否有重載的operator()(int)嗎?

這可以解釋行為-在這種情況下,這只是函數調用

暫無
暫無

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

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