最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中`&`符號用法全解析

 更新時間:2026年05月23日 10:41:08   作者:海青橘  
在C++里,&有三種不同的含義,你代碼里主要用,主要用于引用和取地址,理解&對于單例模式至關(guān)重要,避免復(fù)制對象、提升效率,本文逐行解析代碼中所有&的含義、作用用和區(qū)別,幫助你完全掌握,立即查看

C++ 中&符號全解析(結(jié)合你的單例代碼逐行講透)

我直接結(jié)合你這段代碼,把所有出現(xiàn)的 &、語法含義、作用、區(qū)別一次性講清楚,新手也能完全看懂。

先給你一個總覽:

在 C++ 里,&3 種完全不同的含義,你的代碼里用到了 2 種

  1. 引用(最常用,你的代碼核心) → 變量/函數(shù)名前面的 &
  2. 取地址 → 極少用在單例里
  3. 按位與 → 這里完全不涉及

一、你的代碼里所有&逐行解析

這里的&:引用(左值引用)

S& operator=(const S&) = delete;
// ↑這里                ↑這里

S&:返回值是引用

  • 語法:類型 & 變量名
  • 意思:返回這個對象本身,而不是復(fù)制一份
  • 作用:避免拷貝、提高效率、保證操作的是同一個單例對象

const S&:參數(shù)是引用

  • 意思:傳參時不復(fù)制對象,直接用原來的對象
  • const:保證函數(shù)內(nèi)部不能修改這個對象
  • 作用:高效、安全、不產(chǎn)生臨時對象

這里的&:引用

static S& gets() { return s1; }
//      ↑這里
  • 意思:返回單例對象的引用
  • 不是返回對象副本!返回的就是唯一的那個 s1 本身
  • 這是單例模式必須用引用的原因:永遠(yuǎn)只有一個對象

這里的&:定義引用變量

S& s = S::gets();
// ↑這里
  • 語法:類型 & 引用名 = 實體對象;
  • 意思:s 是一個別名,它和 s1同一個東西
  • 不是新對象!不占額外內(nèi)存!只是別名!

二、最重要:引用到底是什么?(用最簡單的話)

引用 = 變量的別名

就像一個人有大名和小名,都是指同一個人

int a = 10;
int& b = a;
  • ab同一個變量
  • 修改 b 就是修改 a
  • 不占新內(nèi)存
  • 必須初始化(不能為空)
  • 一旦綁定,不能改綁別的變量

三、語法格式(背會這 4 種就夠了)

1. 定義引用變量

類型 & 引用名 = 變量名;
int &b = a;
S &s = 對象;

2. 函數(shù)返回引用

類型 & 函數(shù)名() { ... }
S & gets() { ... }

作用:返回對象本身,不復(fù)制

3. 函數(shù)參數(shù)使用引用

void func(const 類型 & 參數(shù)名)
void func(const S & obj)

作用:高效傳參,不復(fù)制對象。

4. 賦值運算符重載(規(guī)范寫法)

類型 & operator=(const 類型 &)
S & operator=(const S &)

四、你的單例代碼里為什么到處都要用&?

我告訴你核心原因,這是單例模式的靈魂:

單例 = 只能有一個對象

如果不用引用,就會復(fù)制出新對象,單例直接失效!

看對比:

錯誤寫法(不用引用 → 復(fù)制對象 → 不是單例)

static S gets() { return s1; }
S s = S::gets();

這里會拷貝構(gòu)造一個新對象,破壞單例!

正確寫法(用引用 → 同一個對象 → 單例)

static S& gets() { return s1; }
S& s = S::gets();

S& 保證永遠(yuǎn)操作唯一的那個單例對象。

五、最容易混淆的點:引用 & vs 指針 *

你只需要記住一句話:

引用 = 安全的、自動解引用的指針

特性引用 S&指針 S*
空值不能為空可以為空
重新賦值不能
訪問成員.->
內(nèi)存不占額外內(nèi)存占指針內(nèi)存

你的單例用引用,就是為了安全、簡潔、不復(fù)制。

六、總結(jié)(最簡單版本)

你代碼里所有的&都表示

引用(別名)

語法規(guī)則:

  1. S& → 返回引用(返回對象本身,不復(fù)制)
  2. const S& → 參數(shù)引用(高效傳參)
  3. S& s → 定義引用變量(別名)

一句話記住:

& 放在類型后面,就是引用,代表“別名”,不復(fù)制對象,操作同一個實體。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于OpenCV實現(xiàn)圖像分割

    基于OpenCV實現(xiàn)圖像分割

    這篇文章主要為大家詳細(xì)介紹了基于OpenCV實現(xiàn)圖像分割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • c++實現(xiàn)md5加密的代碼

    c++實現(xiàn)md5加密的代碼

    這篇文章主要介紹了c++實現(xiàn)md5加密的實例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C/C++實現(xiàn)去除字符串中的空格(附帶源碼)

    C/C++實現(xiàn)去除字符串中的空格(附帶源碼)

    這篇文章主要為大家詳細(xì)介紹了C/C++實現(xiàn)去除字符串中的空格的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-11-11
  • boost.asio框架系列之調(diào)度器io_service

    boost.asio框架系列之調(diào)度器io_service

    這篇文章介紹了boost.asio框架系列之調(diào)度器io_service,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • C++超細(xì)致講解隊列queue的使用

    C++超細(xì)致講解隊列queue的使用

    隊列先進先出,即只能在容器的末尾添加新元素,只能從頭部移除元素,下面這篇文章主要給大家介紹了關(guān)于C++中隊列queue用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • Qt QMessageBox類使用教程

    Qt QMessageBox類使用教程

    QMessageBox類提供一個模態(tài)對話框,用于通知用戶或詢問用戶一個問題并接收答案。這篇文章主要介紹了QMessageBox的一些常用用法,需要的小伙伴快來學(xué)習(xí)一下
    2021-12-12
  • C語言之malloc動態(tài)分配內(nèi)存和free釋放

    C語言之malloc動態(tài)分配內(nèi)存和free釋放

    這篇文章主要介紹了C語言之malloc動態(tài)分配內(nèi)存和free釋放,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C語言實現(xiàn)萬年歷

    C語言實現(xiàn)萬年歷

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)萬年歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++ Boost PropertyTree解析INI文件詳解

    C++ Boost PropertyTree解析INI文件詳解

    Boost PropertyTree庫不僅可以解析JSON,XML格式,還可以直接解析INI格式文件。這篇文章就是為大家介紹一下如何通過Boost PropertyTree解析INI文件,需要的可以參考一下
    2022-01-01
  • 詳解C++中的左值,純右值和將亡值

    詳解C++中的左值,純右值和將亡值

    C++中本身是存在左值,右值的概念,但是在C11中又出現(xiàn)了左值,純右值,將亡值得概念;這里我們主要介紹這些值的概念,感興趣的可以了解一下
    2022-09-09

最新評論

浮梁县| 扶绥县| 澜沧| 天全县| 安泽县| 海丰县| 郁南县| 沙雅县| 嘉义县| 怀宁县| 铁岭市| 雅江县| 博爱县| 常宁市| 四平市| 嘉峪关市| 宝清县| 皋兰县| 定兴县| 丰镇市| 黑水县| 嘉峪关市| 安丘市| 宣城市| 阿荣旗| 梧州市| 文成县| 铁岭市| 屏东市| 大港区| 黑龙江省| 福安市| 广宗县| 台南县| 台江县| 景洪市| 商水县| 民权县| 兴安县| 樟树市| 上杭县|