[英]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.