日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

C++中關(guān)于構(gòu)造函數(shù)的幾個關(guān)鍵字

來源: 責(zé)編: 時間:2024-01-26 09:05:25 232觀看
導(dǎo)讀今天我們將深入探討構(gòu)造函數(shù)中的三個關(guān)鍵字:= delete、= default 以及 explicit。這些關(guān)鍵字在C++中扮演著重要的角色,能夠提供更加精確的控制和更清晰的語義。一、= delete:顯式禁止首先,讓我們聚焦于 = delete 這個關(guān)鍵

今天我們將深入探討構(gòu)造函數(shù)中的三個關(guān)鍵字:= delete、= default 以及 explicit。這些關(guān)鍵字在C++中扮演著重要的角色,能夠提供更加精確的控制和更清晰的語義。bGz28資訊網(wǎng)——每日最新資訊28at.com

bGz28資訊網(wǎng)——每日最新資訊28at.com

一、= delete:顯式禁止

首先,讓我們聚焦于 = delete 這個關(guān)鍵字。在C++中,我們有時候希望禁止某個函數(shù)的調(diào)用,可能是因為該函數(shù)的默認(rèn)實現(xiàn)不符合我們的需求,或者因為我們不希望該函數(shù)被使用。這時,= delete 就派上了用場。bGz28資訊網(wǎng)——每日最新資訊28at.com

1. 禁止拷貝構(gòu)造函數(shù) 

考慮一個場景,我們希望某個類對象不可被拷貝。通過 = delete,我們可以明確表示禁止拷貝構(gòu)造函數(shù)的使用:bGz28資訊網(wǎng)——每日最新資訊28at.com

class NonCopyable {public:    // 禁止拷貝構(gòu)造函數(shù)    NonCopyable(const NonCopyable&) = delete;    // 默認(rèn)構(gòu)造函數(shù)    NonCopyable() {        // 構(gòu)造函數(shù)的內(nèi)容    }};

通過這種方式,我們防止了對象的拷貝,確保該類的實例無法通過拷貝構(gòu)造函數(shù)進行復(fù)制。bGz28資訊網(wǎng)——每日最新資訊28at.com

2. 禁止移動構(gòu)造函數(shù) 

同樣,我們也可以使用 = delete 來禁止移動構(gòu)造函數(shù)的使用,從而防止對象的移動語義:bGz28資訊網(wǎng)——每日最新資訊28at.com

class NonMovable {public:    // 禁止移動構(gòu)造函數(shù)    NonMovable(NonMovable&&) = delete;    // 默認(rèn)構(gòu)造函數(shù)    NonMovable() {        // 構(gòu)造函數(shù)的內(nèi)容    }};

這種用法確保了對象在實例化后無法通過移動構(gòu)造函數(shù)進行移動操作。bGz28資訊網(wǎng)——每日最新資訊28at.com

二、= default:顯式請求默認(rèn)實現(xiàn)

接下來,讓我們轉(zhuǎn)向 = default,這個關(guān)鍵字用于顯式請求編譯器生成默認(rèn)實現(xiàn)。通常,編譯器會在特殊成員函數(shù)(如默認(rèn)構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)等)的缺失時自動生成默認(rèn)實現(xiàn),但有時我們可能需要顯示地聲明這一請求。bGz28資訊網(wǎng)——每日最新資訊28at.com

1. 默認(rèn)構(gòu)造函數(shù)的默認(rèn)實現(xiàn) 

考慮一個類,我們希望使用默認(rèn)構(gòu)造函數(shù)來創(chuàng)建對象。通過 = default,我們明確告訴編譯器生成默認(rèn)的構(gòu)造函數(shù)實現(xiàn):bGz28資訊網(wǎng)——每日最新資訊28at.com

class DefaultConstructible {public:    // 默認(rèn)構(gòu)造函數(shù)的默認(rèn)實現(xiàn)    DefaultConstructible() = default;    // 用戶自定義的拷貝構(gòu)造函數(shù)    DefaultConstructible(const DefaultConstructible& other) {        // 拷貝構(gòu)造函數(shù)的內(nèi)容    }};

在這個例子中,我們顯示地請求編譯器生成默認(rèn)構(gòu)造函數(shù)的實現(xiàn),同時提供了自定義的拷貝構(gòu)造函數(shù)。bGz28資訊網(wǎng)——每日最新資訊28at.com

2. 委托構(gòu)造函數(shù) 

= default 也可以用于委托構(gòu)造函數(shù),即一個構(gòu)造函數(shù)調(diào)用同一類的另一個構(gòu)造函數(shù)。這有助于減少代碼重復(fù),提高代碼的可維護性。bGz28資訊網(wǎng)——每日最新資訊28at.com

class MyClass {public:    // 構(gòu)造函數(shù)的初始化列表    MyClass(int x, double y) : integerMember(x), doubleMember(y) {        // 構(gòu)造函數(shù)的內(nèi)容    }    // 委托構(gòu)造函數(shù)    MyClass(int x) : MyClass(x, 0.0) {}private:    int integerMember;    double doubleMember;};

在上面的例子中,MyClass(int x) 委托了 MyClass(int x, double y) 構(gòu)造函數(shù),實現(xiàn)了代碼的重用。bGz28資訊網(wǎng)——每日最新資訊28at.com

三、explicit:顯式聲明構(gòu)造函數(shù)

最后,我們來討論 explicit 這個關(guān)鍵字,它用于顯式聲明構(gòu)造函數(shù)。在某些情況下,我們可能不希望發(fā)生隱式類型轉(zhuǎn)換,而是希望確保只有顯式調(diào)用才能進行構(gòu)造。bGz28資訊網(wǎng)——每日最新資訊28at.com

class ExplicitClass {public:    explicit ExplicitClass(int x) {        // 構(gòu)造函數(shù)的內(nèi)容    }};

在這個例子中,explicit 防止了將 int 隱式轉(zhuǎn)換為 ExplicitClass 類型。只有顯式調(diào)用構(gòu)造函數(shù)才能創(chuàng)建對象,確保了類型轉(zhuǎn)換的明確性。bGz28資訊網(wǎng)——每日最新資訊28at.com

結(jié)語

總結(jié)一下,C++中的 = delete、= default 和 explicit 這些關(guān)鍵字為我們提供了更多的控制權(quán)和精確性,使得我們能夠更好地定義和管理構(gòu)造函數(shù)的行為。bGz28資訊網(wǎng)——每日最新資訊28at.com

= delete 可以用于禁止某個函數(shù)的使用,= default 可以顯式請求默認(rèn)實現(xiàn),而 explicit 可以確保構(gòu)造函數(shù)的顯式調(diào)用。在設(shè)計和實現(xiàn)類的時候,充分利用這些關(guān)鍵字可以使代碼更加健壯、清晰和易于維護。bGz28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-68340-0.htmlC++中關(guān)于構(gòu)造函數(shù)的幾個關(guān)鍵字

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python 變量?對象?引用?賦值?一個例子解釋清楚

下一篇: C++ rand()隨機數(shù)函數(shù)的應(yīng)用

標(biāo)簽:
  • 熱門焦點
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實現(xiàn)原理和應(yīng)用
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級

    來源 | 伯虎財經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 華為HarmonyOS 4.0將于8月4日發(fā)布 或搭載AI大模型技術(shù)

    華為宣布HarmonyOS4.0將于8月4日正式發(fā)布。此前,華為已經(jīng)針對開發(fā)者公布了HarmonyOS4.0,以便于開發(fā)者提前進行適配,也因此被曝光出了一些新系統(tǒng)的特性
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
  • 到手價3099元起!iQOO Neo8 Pro今日首銷:安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發(fā)布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標(biāo)準(zhǔn)版搭載高通驍龍8+,而Pro版更
  • 2299元起!iQOO Pad明晚首銷:性能最強天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會,除了首發(fā)安卓最強旗艦處理器的iQOO Neo8系列新機外,還在發(fā)布會上推出了旗下首款平板電腦——iQOO Pad,其最大的賣點
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創(chuàng)佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 蘋果140W USB-C充電器:采用氮化鎵技術(shù)

    據(jù)10 月 30 日 9to5 Mac 消息報道,當(dāng)蘋果推出新的 MacBook Pro 2021 時,該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機型的盒子里,也支
Top 主站蜘蛛池模板: 永平县| 双鸭山市| 宁城县| 石渠县| 房产| 鄂托克前旗| 甘肃省| 凉山| 弋阳县| 福海县| 祁东县| 阿克苏市| 枞阳县| 景泰县| 辽阳市| 禹州市| 永福县| 贵阳市| 泸水县| 丹凤县| 定西市| 志丹县| 天气| 崇文区| 西宁市| 汕头市| 阜南县| 西丰县| 江达县| 象山县| 新和县| 连云港市| 和平区| 枣庄市| 呼伦贝尔市| 清镇市| 嘉义县| 七台河市| 邻水| 高雄县| 澜沧|