我有一個類似於句柄的「智能指針」。operator()括號是否在函數調用中創建的對象上調用?
#define DEST 123
HANDLE OpenHandle(int dest);
class SmartHandle;
void SendMsg(HANDLE dest_handle);
SendMsg(SmartHandle(OpenHandle(DEST)))
這個構造經常在我的代碼中使用,所以它工作,但我不明白爲什麼。
OpenHandle(DEST)
返回的句柄「智能指針」類
SendMsg
- 採用相同類型的參數是由OpenHandle
回報這是一個簡單的HANDLE
又名void*
對於這個東西的工作,它的確如此,它意味着HANDLE SmartHandle::operator()
被調用。
問題
爲什麼HANDLE SmartHandle::operator()
被調用?
看代碼,我只想說創建了一個類型爲SmartHandle
的對象,並且沒有任何返回,然後調用析構函數SmartHandle
。
不是萬能的,看起來像'運算符()'實際上是'操作符()',這將是太容易:P – user463035818