C++——構造函數的補充:初始化列表

? ? ? ? C++中,構造函數為成員變量賦值的方法有兩種:構造函數體賦值和初始化列表。

? ? ? ? 構造函數體賦值是在構造函數里面為成員變量賦值,如:

class Data
{
public://構造函數體賦值Data(int year,int month,int day){_year = year;_month = month;_day = day;}private:int _year;int _month;int _day;
};

? ? ? ? 但是,構造函數體賦值其實是先調用成員變量的默認構造函數進行初始化,再在構造函數體內通過賦值運算符重新賦值,相當于執行了“默認構造+賦值”兩步。因此,其本質還是賦值,而不是初始化。因為初始化只能初始化一次,而構造函數體內可以多次賦值。

? ? ? ? 函數體中多次賦值舉例:

class A
{
public://結果為最后一次賦值的結果A(int a = 0){_a = a;_a += 2;if (_a > 1){_a *= 10;}}private:int _a;
};

? ? ? ? 而初始化列表是在進入構造函數體之前,就會完成對成員變量的初始化。

? ? ? ? 初始化列表在構造函數的括號后面,以冒號開頭,用逗號分隔成員變量,每個成員變量后面跟一個小括號,里面放初始值。

class Data
{
public://初始化列表Data(int year, int month, int day):_year(year), _month(month), _day(day){//里面可以根據需求進行賦值操作}private:int _year;int _month;int _day;
};

? ? ? ? 初始化列表有很重要的作用,當有些構造函數體賦值無法完成給變量賦初值的操作時,就要用到初始化列表。比如const修飾的成員變量、引用成員變量、自定義類型成員。const修飾的成員變量只能初始化,不能賦值修改;引用成員變量在定義時必須指明時誰的別名;自定義類型成員要調用對應的構造函數。而類中的成員變量只是聲明,不能直接賦值。

class A
{
public:A(int a = 10):_a(a){ }private:int _a;
};class B
{
public:B(int& ref):_aobj(1),_ref(ref), _n(20){}private:A _aobj;//寫在初始化列表會調用它自己的構造函數;不寫,就必須要有對應的默認構造函數 int& _ref;const int _n;int x;//內置類型寫上會初始化為對應值,不寫上就是隨機值
};

? ? ? ? 成員變量在類中聲明次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先后順序無關。

class A
{
public:A(int a = 0):_a1(a)//后初始化,_a2(_a1)//先初始化,結果為隨機值{}private:int _a2;int _a1;
};int main()
{A aa1(10);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90678.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90678.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90678.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

代碼隨想錄|圖論|12島嶼周長

leetcode:106. 島嶼的周長 題目 題目描述 給定一個由 1(陸地)和 0(水)組成的矩陣,島嶼是被水包圍,并且通過水平方向或垂直方向上相鄰的陸地連接而成的。 你可以假設矩陣外均被水包圍。在矩陣中恰好擁有…

開發制作模仿參考抄別人的小程序系統

很多老板看見別人公司的小程序系統界面好看,功能強大,使用人數多。就想要抄襲模仿參考別人家的小程序系統。想要了解一下有沒有侵權風險,以及怎么開發制作開發制作模仿參考抄別人的小程序系統。首先回答第一個問題,只要你的小程序…

c語言中的數組IV

數組的集成初始化 集成初始化的定位 數組的大小 數組的賦值 不能直接將一個數組a賦值給數組b&#xff0c;只能通過遍歷來實現 遍歷數組 示例——檢索元素在數組中的位置#include <stdio.h> int search(int key,int a[],int length); int main(void){int a[] {2,4,6,7,1,…

LDO選型

目錄 一、最大輸出電流 二、最大輸入電壓 三、最大功率&#xff1a;Pmax 四、負載動態調整率 五、輸入電源紋波抑制比&#xff1a;PSRR 一、最大輸出電流 參考TI LM1117IMPX-3.3/NOPB數據手冊 由于LDO轉換效率很低&#xff0c;LDO的標稱最大電流 ≥ 實際最大負載電流 1…

飛算JavaAI:重構Java開發的“人機協同”新范式

目錄一、從需求到架構&#xff1a;AI深度參與開發“頂層設計”1.1 需求結構化&#xff1a;自然語言到技術要素的準確轉換1.2 架構方案生成&#xff1a;基于最佳實踐的動態匹配二、編碼全流程&#xff1a;從“手寫代碼”到“人機協同創作”2.1 復雜業務邏輯生成&#xff1a;以“…

解決SQL Server SQL語句性能問題(9)——SQL語句改寫(7)

9.4.15. 消除join場景一 與Oracle等其他關系庫類似,SQL Server中,join作為基本語法用于SQL語句中相關表之間的連接,有些場景中,join既可以增強SQL語句的可讀性,同時,又可以提升SQL語句的性能,但有些場景中,join會導致CBO為SQL語句產生次優的查詢計劃,進而出現SQL語句…

深度學習-數據準備

一、數據準備 1.1定義 數據準備&#xff08;Data Preparation&#xff09; 是數據分析與機器學習流程中的核心環節&#xff0c;指將原始數據轉換為適合分析或建模的結構化格式的過程。 1.2組成 數據準備主要由兩個部分組成&#xff0c;一個是劃分數據集&#xff0c;一個是構建…

IPA軟件源預覽系統源碼(源碼下載)

這是一款IPA軟件源預覽系統源碼&#xff0c;搭建這個源碼一定記住沒有軟件源的別搭建&#xff0c;因為你玩不明白&#xff0c;不是做IPA軟件源的不要下載這套源碼&#xff0c;簡單的測試了&#xff0c;UI很舒服&#xff0c;喜歡的自行部署&#xff01; 源碼下載&#xff1a;htt…

python 數據分析 單細胞測序數據分析 相關的圖表,常見于腫瘤免疫微環境、細胞亞群功能研究 ,各圖表類型及邏輯關系如下

這是一組 單細胞測序數據分析 相關的圖表&#xff0c;常見于腫瘤免疫微環境、細胞亞群功能研究 &#xff0c;各圖表類型及邏輯關系如下&#xff1a;使用kimi doubao 和deepseek &#xff0c;分析圖標和pdf 豆包最好&#xff0c;用豆包分析| 圖表類型 A、E&#xff08;堆疊柱狀…

表達式索引海外云持久化實踐:關鍵技術解析與性能優化

隨著全球數字化轉型加速&#xff0c;表達式索引技術正成為海外云服務商提升數據庫性能的核心方案。本文將深度解析如何通過云原生架構實現索引持久化&#xff0c;對比主流云平臺的技術實現差異&#xff0c;并給出跨國業務場景下的優化建議。 表達式索引海外云持久化實踐&#x…

sprinboot團隊任務管理系統 計算機畢業設計源碼32322

摘 要 隨著團隊協作模式的日益多樣化&#xff0c;傳統的任務管理方法已無法滿足現代團隊對高效協作和任務分配的需求。因此&#xff0c;本研究通過引入信息化設計并實現了一套團隊任務管理系統&#xff0c;旨在為管理員、成員用戶和團長用戶等用戶提供高效、靈活的任務管理…

單鏈表,咕咕咕

1.引入單鏈表順序表對于中間或者頭部的刪除&#xff0c;時間復雜度為O(N)&#xff0c;增容需要申請新的空間&#xff0c;拷貝數據&#xff0c;釋放就空間&#xff0c;消耗。增容一般是2倍的增長&#xff0c;會有空間的浪費。為了解決這些問題&#xff0c;引入了單鏈表。2.單鏈表…

docker設置鏡像加速

配置鏡像加速器解決 Docker 拉取問題 在使用 Docker 拉取鏡像時&#xff0c;我首先按照官方指引嘗試配置阿里云鏡像加速器。然而&#xff0c;多次操作后仍無法正常使用&#xff0c;懷疑是個人賬號沒有權限拉取鏡像&#xff0c;但經過多輪權限檢查與配置核對&#xff0c;始終未…

【計算機網絡】王道考研筆記整理(2)物理層

第二章 物理層2.1 通信基礎的基本概念本節主要介紹通信中常用的一些基本概念&#xff0c;包括&#xff1a;信源、信宿、信號、信道&#xff0c;以及碼元、速率、波特。首先&#xff0c;我們來看什么是信源、信宿、信號、信道&#xff0c;這些概念通過一張圖就可以理解。其中&a…

2023年IEEE TITS SCI2區TOP,增強回溯搜索算法EBSA+多無人機輔助商業包裹遞送系統飛行規劃,深度解析+性能實測

目錄1.摘要2.回溯搜索算法BSA原理3.模型定義4.增強回溯搜索算法EBSA5.結果展示6.參考文獻7.算法輔導應用定制讀者交流1.摘要 利用無人機進行商業包裹投遞可以顯著推動物流行業的轉型升級&#xff0c;這得益于節省了人力資源成本&#xff0c;而無人機正在成為智能交通運輸系統的…

window wsl 環境下編譯openharmony,HarmonyOS 三方庫 FFmpeg

1.wsl 創建 C:\Users\Administrator>wsl --list --online 以下是可安裝的有效分發的列表。 使默認分發用 “*” 表示。 使用 wsl --install -d <Distro> 安裝。 NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ub…

Kubernetes服務暴露與負載均衡深度探析

目錄 Kubernetes服務基礎 服務類型與適用場景 服務發現與DNS 負載均衡機制 kube-proxy IPVS Ingress控制器 Ingress與服務暴露 Ingress資源 Ingress控制器 負載均衡策略與配置 服務配置 Ingress配置 IPVS配置 高可用性設計 服務冗余 Ingress控制器高可用 負載…

探索飛算 JavaAI 進階:解鎖高效Java開發的新維度

前引&#xff1a;在當今快速迭代的軟件開發領域&#xff0c;Java作為企業級應用的基石&#xff0c;持續推動著技術創新。隨著性能需求的提升&#xff0c;“飛算JAVA”應運而生&#xff0c;它融合了現代優化理念&#xff0c;為開發者提供了一套簡潔、高效的解決方案。本文將深入…

Java大廠面試故事:謝飛機的互聯網醫療系統技術面試(Spring Boot、MyBatis、Kafka、Spring Security、AI等)

Java大廠面試故事&#xff1a;謝飛機的互聯網醫療系統技術面試&#xff08;Spring Boot、MyBatis、Kafka、Spring Security、AI等&#xff09;本文以互聯網醫療場景為主線&#xff0c;模擬Java大廠真實面試流程&#xff0c;由嚴肅面試官與"水貨"程序員謝飛機展開有趣…

Deekseek 學習筆記

目錄 比較全的微調筆記&#xff0c;推薦&#xff1a; ds 硬件gpu測試網站&#xff1a; 比較全的微調筆記&#xff0c;推薦&#xff1a; 零基礎入門&#xff1a;DeepSeek微調教程來了&#xff01;_deepseek微調訓練-CSDN博客 r1微調筆記&#xff1a; https://zhuanlan.zhihu…