探索單一& 符號在成員函數參數中的作用
在C 程式設計中,成員函數的語法通常包括& 符號的使用符號(&) 作為非靜態成員函數的參考限定符。這些符號可以根據用於呼叫函數的物件的值類別來影響函數呼叫的行為。本文深入探討了在這種情況下使用單一與號 (&) 的重要性。
具體來說,成員函數宣告的參數清單後面出現單一與號 & 表示該函數將在以下情況下被呼叫:該物件是左值引用或常規的非引用物件。這允許使用物件名稱或透過左值引用直接呼叫函數。例如:
class wrap { public: operator obj() const & { ... } // Invocable via lvalue reference };
相反,如果沒有任何 ref 限定符,表示聲明中沒有 & 符號,則表示無論物件的值類別為何,都可以呼叫該函數。這意味著可以使用左值或右值引用來呼叫它。
要進一步理解區別,請考慮以下程式碼片段:
struct foo { void bar() {} // Function without a ref-qualifier void bar1() & {} // Function with an lvalue reference ref-qualifier void bar2() && {} // Function with an rvalue reference ref-qualifier };
在此範例中:
為了說明此行為,以下程式碼示範了這些函數如何根據物件的值類別進行呼叫:
foo().bar(); // Always fine foo().bar1(); // Doesn't compile because bar1 requires an lvalue foo().bar2(); foo f; f.bar(); // Always fine f.bar1(); f.bar2(); // Doesn't compile because bar2 requires an rvalue
總而言之,在參數列表之後存在單一& 符號成員函數聲明表明當物件是左值引用時可以呼叫該函數。這提供了一種根據所使用物件的值類別來限制函數呼叫的方法。
以上是C 成員函數參數中單一與號 (&) 的意思是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!