在給定的程式碼片段中:
class wrap { operator obj() const & { ... } //Copy from me. operator obj() && { ... } //Move from me. };
我們遇到兩個具有不同ref 的成員函數宣告- 限定詞(& 和&&)。但是,單一與號 (&) 表示什麼?
非靜態成員函數宣告中的單一與號表示當物件是左值引用時呼叫該成員函數。預設情況下,可以在左值和右值物件上呼叫非靜態成員函數。但是,透過指定 &,函數只能接受左值。
為了說明差異:
struct foo { void bar() {} void bar1() & {} void bar2() && {} };
範例:
int main() { foo().bar(); // (always fine) foo().bar1(); // doesn't compile because `bar1()` requires an lvalue foo().bar2(); // doesn't compile because `bar2()` requires an rvalue foo f; f.bar(); // (always fine) f.bar1(); f.bar2(); // doesn't compile because `bar2()` requires an rvalue }
以上是C 成員函數宣告中的單一與號 (&) 意味著什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!