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

C++ 取地址符相關(guān)的默認(rèn)函數(shù)

 更新時(shí)間:2026年03月20日 09:58:18   作者:越甲八千  
本文主要介紹了C++ 取地址符相關(guān)的默認(rèn)函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

C++編譯器會(huì)為類自動(dòng)生成兩個(gè)默認(rèn)的取地址運(yùn)算符重載函數(shù)(取普通對(duì)象地址、取const對(duì)象地址),但它們不屬于“六大默認(rèn)成員函數(shù)”,而是編譯器隱式生成的輔助函數(shù),且?guī)缀醪粫?huì)被開發(fā)者手動(dòng)修改(除非有特殊需求)。

一、取地址運(yùn)算符重載的默認(rèn)函數(shù)

1. 函數(shù)原型(以class Cgoods為例)

函數(shù)類型原型作用
普通取地址運(yùn)算符Cgoods* operator&()返回非const對(duì)象的地址(this指針)
const取地址運(yùn)算符const Cgoods* operator&() const返回const對(duì)象的地址(const this)

2. 編譯器默認(rèn)實(shí)現(xiàn)

編譯器生成的默認(rèn)版本邏輯極其簡單:直接返回對(duì)象的this指針,等價(jià)于:

// 普通版本
Cgoods* Cgoods::operator&() {
    return this; // 返回當(dāng)前對(duì)象的地址
}

// const版本
const Cgoods* Cgoods::operator&() const {
    return this; // 返回當(dāng)前對(duì)象的const地址
}

二、使用示例(驗(yàn)證默認(rèn)行為)

在你之前的Cgoods類代碼中,無需手動(dòng)定義這兩個(gè)函數(shù),直接使用取地址符&即可:

int main() {
    Cgoods goods1("蘋果", 9.9f);
    const Cgoods goods2("香蕉", 5.9f);

    // 調(diào)用普通取地址運(yùn)算符:operator&()
    Cgoods* p1 = &goods1;
    cout << "普通對(duì)象地址:" << p1 << endl;

    // 調(diào)用const取地址運(yùn)算符:operator&() const
    const Cgoods* p2 = &goods2;
    cout << "const對(duì)象地址:" << p2 << endl;

    return 0;
}

輸出結(jié)果(地址為示例,實(shí)際不同):

帶參構(gòu)造函數(shù)調(diào)用:蘋果
帶參構(gòu)造函數(shù)調(diào)用:香蕉
普通對(duì)象地址:0x7ffeefbff5e0
const對(duì)象地址:0x7ffeefbff600
析構(gòu)函數(shù)調(diào)用:釋放 香蕉 的內(nèi)存
析構(gòu)函數(shù)調(diào)用:釋放 蘋果 的內(nèi)存

三、關(guān)鍵特性說明

1. 生成條件

  • 編譯器總是會(huì)生成這兩個(gè)默認(rèn)函數(shù),除非你顯式手動(dòng)定義了對(duì)應(yīng)的版本(普通/const);
  • 即使你定義了其他默認(rèn)函數(shù)(如拷貝構(gòu)造、移動(dòng)賦值),這兩個(gè)取地址函數(shù)仍會(huì)被生成。

2. 何時(shí)需要手動(dòng)重載?

幾乎不需要!只有極特殊場景下才會(huì)修改,比如:

  • 禁止外部獲取對(duì)象地址(返回nullptr);
  • 對(duì)地址做特殊處理(如返回對(duì)象內(nèi)部某個(gè)成員的地址)。

示例:手動(dòng)重載取地址運(yùn)算符(禁止獲取地址)

class Cgoods {
    // ... 其他成員不變 ...

    // 手動(dòng)重載普通取地址運(yùn)算符
    Cgoods* operator&() {
        return nullptr; // 不返回真實(shí)地址
    }

    // 手動(dòng)重載const取地址運(yùn)算符
    const Cgoods* operator&() const {
        return nullptr;
    }
};

int main() {
    Cgoods goods("蘋果", 9.9f);
    cout << &goods << endl; // 輸出 0(nullptr)
    return 0;
}

3. 和六大默認(rèn)函數(shù)的區(qū)別

維度六大默認(rèn)成員函數(shù)(構(gòu)造/析構(gòu)/拷貝/移動(dòng))取地址運(yùn)算符重載函數(shù)
核心作用管理對(duì)象生命周期/資源提供對(duì)象地址的訪問方式
生成優(yōu)先級(jí)顯式定義后編譯器不再生成除非手動(dòng)定義,否則始終生成
開發(fā)修改頻率高頻(如深拷貝、移動(dòng)語義)幾乎為0(特殊場景才修改)
異常風(fēng)險(xiǎn)高(如內(nèi)存泄漏、重復(fù)釋放)極低(僅返回指針)

總結(jié)

  1. 存在性:C++有取地址符相關(guān)的默認(rèn)函數(shù)(兩個(gè)版本:普通/const),但不屬于核心六大默認(rèn)成員函數(shù);
  2. 默認(rèn)行為:編譯器生成的版本直接返回this指針,滿足絕大多數(shù)場景需求;
  3. 使用建議:無需手動(dòng)重載,只有禁止獲取對(duì)象地址、修改地址返回邏輯等特殊場景才需要自定義;
  4. 核心記憶:取地址運(yùn)算符重載是“輔助性默認(rèn)函數(shù)”,優(yōu)先級(jí)遠(yuǎn)低于構(gòu)造/析構(gòu)/拷貝/移動(dòng),日常開發(fā)幾乎不用關(guān)注。

到此這篇關(guān)于C++ 取地址符相關(guān)的默認(rèn)函數(shù)的文章就介紹到這了,更多相關(guān)C++ 取地址符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言數(shù)據(jù)結(jié)構(gòu)之簡易計(jì)算器

    C語言數(shù)據(jù)結(jié)構(gòu)之簡易計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了C語言數(shù)據(jù)結(jié)構(gòu)之簡易計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • C/C++仿華容道小游戲

    C/C++仿華容道小游戲

    這篇文章主要介紹了C/C++仿華容道小游戲的相關(guān)資料,模仿實(shí)現(xiàn)華容道游戲,感興趣的朋友可以參考一下
    2016-02-02
  • 最新評(píng)論

    丰都县| 福清市| 新乡市| 定边县| 米脂县| 泌阳县| 苏尼特右旗| 二连浩特市| 浦东新区| 定襄县| 玉龙| 宜良县| 开化县| 昌宁县| 饶阳县| 利津县| 九龙县| 阿鲁科尔沁旗| 克拉玛依市| 景德镇市| 浦县| 白银市| 嘉善县| 克拉玛依市| 南丰县| 思茅市| 固始县| 秦安县| 礼泉县| 和田县| 平山县| 周至县| 彭阳县| 胶州市| 岳池县| 拉萨市| 密云县| 中方县| 板桥市| 颍上县| 肥西县|