首頁 >後端開發 >C++ >C 成員函數宣告中的單一與號 (&) 意味著什麼?

C 成員函數宣告中的單一與號 (&) 意味著什麼?

Susan Sarandon
Susan Sarandon原創
2024-12-15 11:55:09694瀏覽

What Does the Single Ampersand (&) Mean in a C   Member Function Declaration?

理解成員函數宣告中的單一& 符號

在給定的程式碼片段中:

class wrap {
   operator obj() const & { ... }   //Copy from me.
   operator obj() && { ... }  //Move from me.
};

我們遇到兩個具有不同ref 的成員函數宣告- 限定詞(& 和&&)。但是,單一與號 (&) 表示什麼?

非靜態成員函數宣告中的單一與號表示當物件是左值引用時呼叫該成員函數。預設情況下,可以在左值和右值物件上呼叫非靜態成員函數。但是,透過指定 &,函數只能接受左值。

為了說明差異:

struct foo
{
   void bar() {}
   void bar1() & {}
   void bar2() && {}
};
  • bar() 同時接受左值和右值。
  • bar1() 需要左值引用,因此只能在左值上呼叫它物件。
  • 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn