首頁 > 後端開發 > C++ > C 成員函數宣告中的單 & 符號與雙 & 符號有何不同?

C 成員函數宣告中的單 & 符號與雙 & 符號有何不同?

Patricia Arquette
發布: 2024-12-06 13:34:13
原創
432 人瀏覽過

What's the Difference Between Single and Double Ampersands in C   Member Function Declarations?

深入解讀成員函數宣告中的 & 符號

在 C 中,非靜態成員函數可以用 ref 限定符修飾。這些限定符指定傳遞給函數的隱式物件參數的參考類別。

讓我們探討兩個常見的引用限定符:

  1. 單一與號 (&) :表示可以使用物件。
  2. 雙與號 (&&):表示可以使用物件的右值參考來呼叫函數。

不指定任何引用限定符,無論物件的值類別為何,都可以呼叫該函數。

來說明區別:

struct Foo {
    void bar() {}  // Default: can be invoked with both lvalues and rvalues
    void bar1() & {}  // Can only be invoked with lvalues
    void bar2() && {}  // Can only be invoked with rvalues
};
登入後複製

在上面的範例中:

  • bar() 可以在左值(物件)和右邊值(暫時對象)上調用。
  • bar1() 只能在左值上調用,因為它需要對物件。
  • bar2() 只能在右值上調用,因為它需要對該物件的右值參考。

這裡有一個現場演示:

int main() {
    Foo f;
    f.bar();
    f.bar1();
    Foo().bar2();  // Error: bar2 requires an rvalue
}
登入後複製

了解這些引用限定符允許您根據所調用的物件的引用類別來控制對成員函數的存取。

以上是C 成員函數宣告中的單 & 符號與雙 & 符號有何不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板