從零開始的C++編程 2(類和對象下)

目錄

1.構造函數初始化列表

2.類型轉換

3.static成員

4.友元

5.內部類

6.匿名對象


1.構造函數初始化列表

①之前我們實現構造函數時,初始化成員變量主要使?函數體內賦值,構造函數初始化還有?種?式,就是初始化列表,初始化列表的使??式是以?個冒號開始,接著是?個以逗號分隔的數據成員列表,每個"成員變量"后?跟?個放在括號中的初始值或表達式。
②每個成員變量在初始化列表中只能出現?次,語法理解上初始化列表可以認為是每個成員變量定義初始化的地?。
引用成員變量,const成員變量,沒有默認構造的類類型變量,必須放在初始化列表位置進?初始化,否則會編譯報錯。
④C++11?持在成員變量聲明的位置給缺省值,這個缺省值主要是給沒有顯?在初始化列表初始化的成員使?的。
⑤盡量使?初始化列表初始化,因為那些你不在初始化列表初始化的成員也會走初始化列表,如果這個成員在聲明位置給了缺省值,初始化列表會?這個缺省值初始化。如果你沒有給缺省值,對于沒有顯?在初始化列表初始化的內置類型成員是否初始化取決于編譯器,C++并沒有規定。對于沒有顯?在初始化列表初始化的?定義類型成員會調?這個成員類型的默認構造函數,如果沒有默認構造會編譯錯誤。
⑥初始化列表中按照成員變量在類中聲明順序進?初始化,跟成員在初始化列表出現的的先后順序?關。建議聲明順序和初始化列表順序保持?致。

初始化列表總結:
?論是否顯?寫初始化列表,每個構造函數都有初始化列表;
?論是否在初始化列表顯?初始化成員變量,每個成員變量都要?初始化列表初始化;


2.類型轉換

①C++?持內置類型隱式類型轉換為類類型對象,需要有 相關內置類型為參數的構造函數。
②構造函數前?加 explicit就不再?持隱式類型轉換。
③類類型的對象之間也可以隱式轉換,需要相應的構造函數?持

3.static成員

①?static修飾的成員變量,稱之為靜態成員變量,靜態成員變量?定要在 類外進行初始化
②靜態成員變量為所有類對象所共享,不屬于某個具體的對象, 不存在對象中,存放在靜態區
③?static修飾的成員函數,稱之為靜態成員函數, 靜態成員函數沒有this指針
④靜態成員函數中可以訪問其他的靜態成員,但是不能訪問?靜態的,因為沒有this指針。
⑤?靜態的成員函數,可以訪問任意的靜態成員變量和靜態成員函數。
⑥突破類域就可以訪問靜態成員,可以通過類名::靜態成員 或者 對象.靜態成員 來訪問靜態成員變量和靜態成員函數。
⑦靜態成員也是類的成員,受public、protected、private 訪問限定符的限制。
⑧靜態成員變量不能在聲明位置給缺省值初始化,因為缺省值是個構造函數初始化列表的,靜態成員變量不屬于某個對象,不?構造函數初始化列表。
//求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
class Sum
{public:Sum()
{_ret += _i;++_i;
}
static int GetRet()
{return _ret;
}
private:static int _i;static int _ret;
};
int Sum::_i = 1;
int Sum::_ret = 0;
class Solution {
public:int Sum_Solution(int n) {// 變?數組(牛客網可以編譯成功,vs還不支持)Sum arr[n];return Sum::GetRet();}
};

4.友元

①友元提供了?種突破類訪問限定符封裝的?式,友元分為:友元函數和友元類,在函數聲明或者類聲明前?加friend,并把友元聲明放到?個類的里?。
②外部友元函數可訪問類的私有和保護成員,友元函數僅僅是?種聲明,他不是類的成員函數
③友元函數可以在類定義的任何地?聲明,不受類訪問限定符限制
④?個函數可以是多個類的友元函數。
⑤友元類中的成員函數都可以是另?個類的友元函數,都可以訪問另?個類中的私有和保護成員。
⑥友元類的關系是單向的,不具有交換性,?如A類是B類的友元,但是B類不是A類的友元。
⑦友元類關系不能傳遞,如果A是B的友元, B是C的友元,但是A不是C的友元。
⑧有時提供了便利。但是友元會增加耦合度,破壞了封裝,所以友元不宜多?。

5.內部類

? 如果?個類定義在另?個類的內部,這個類就叫做內部類。內部類是?個獨?的類,跟定義在全局相?,他只是受外部類類域限制和訪問限定符限制,所以外部類定義的對象中不包含內部類。
? 內部類默認是外部類的友元類。
? 內部類本質也是?種封裝,當A類跟B類緊密關聯,A類實現出來主要就是給B類使?,那么可以考慮把A類設計為B的內部類,如果放到private/protected位置,那么A類就是B類的專屬內部類,其他地?都?不了。

6.匿名對象

①?類型(實參) 定義出來的對象叫做匿名對象,相?之前我們定義的類型對象名(實參) 定義出來的叫有名對象
②匿名對象?命周期只在當前??,?般臨時定義?個對象當前??下即可,就可以定義匿名對象。

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

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

相關文章

Profibus DP主站轉ModbusTCP網關通訊秘籍

Profibus DP主站轉ModbusTCP網關通訊秘籍 在現代工業自動化領域,不同設備間的數據通訊和系統集成至關重要。Profibus DP和Modbus TCP是兩種廣泛應用的工業通信協議,各有其獨特的優勢和適用場景。然而,由于歷史原因或設備制造商的差異&#x…

【力扣hot100題】(092)最長回文串

有點難度,一開始想到的兩種方法都不對,花了不少時間。 先說之前的方法: ① 遍歷每個點,每個點向外擴張,如果左等于右就一直擴展直到不等。 這個方法可是可以,但我沒有考慮到兩個相同字母也是回文串的情況…

14 - VDMA彩條顯示實驗

文章目錄 1 實驗任務2 系統框圖3 硬件設計4 軟件設計 1 實驗任務 本實驗任務是PS端寫彩條數據至DDR3內存中,然后通過PL端的VDMA IP核將彩條數據通過HDMI接口輸出顯示。 2 系統框圖 本實驗是用HDMI接口固定輸出1080P的彩條圖,所以: rgb2lc…

HarmonyOS-ArkUIV2裝飾器-@Param:組件外部輸入

上文我們了解了@Local裝飾器 ,講明了Local裝飾器不允許外部傳入值對其進行初始化。詳見: HarmonyOS-ArkUI V2裝飾器@Local裝飾器:組件內部狀態-CSDN博客。 但總有場景是需要外部組件傳值過來,然后本組件接收這個值這種場景的。而且很多情況下,一個狀態變量的作用范圍會是…

Java從入門到“放棄”(精通)之旅——運算符③

🌟Java從入門到“放棄”(精通)之旅🚀:運算符深度解析 引言:運算符的本質與價值 作為Java語言的核心組成部分,運算符是構建程序邏輯的基礎元素。它們不僅僅是簡單的數學符號,更是程…

【sgSpliter】自定義組件:可調整寬度、高度、折疊的分割線

sgSpliter.vue <template><!-- 注意&#xff1a;父組件position必須是relative、absolute或fixed&#xff0c;不建議直接在綁定:data后面用"{屬性}"&#xff0c;建議單獨在script中聲明data&#xff0c;避免拖拽過程重復調用 --><div :class"$…

Ningx負載均衡

Ningx負載均衡 upstream(上游)配置負載均衡1、weight&#xff08;加權輪詢&#xff09;2、ip_hash&#xff08;負載均衡&#xff09;3、url hash負載均衡4、least_conn&#xff08;最小連接負載均衡&#xff09; upstream(上游)配置負載均衡 Nginx負載均衡 參考: nginx從安裝…

一個插件,免費使用所有頂級大模型(Deepseek,Gpt,Grok,Gemini)

DeepSider是一款集成于瀏覽器側邊欄的AI對話工具&#xff0c;可免費使用所有頂級大模型 包括GPT-4o&#xff0c;Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0&#xff0c;Deepseek R1滿血版等 以極簡交互與超快的響應速度&#xff0c;完成AI搜索、實時問答、內容創作、翻譯、…

眾趣科技丨數字孿生技術,賦能交通公共設施管理數字化升級

春節假期期間&#xff08;1 月 21 日至 2 月 4 日&#xff09;&#xff0c;作為中國春節申遺成功后的首個春運&#xff0c;交通出行格外火熱&#xff0c;全社會跨區域流動量超 23 億人次&#xff0c;這一數據創下了歷史新高。 面對如此龐大的客流量&#xff0c;傳統的交通管理方…

Linux 入門五:Makefile—— 從手動編譯到工程自動化的蛻變

一、概述&#xff1a;Makefile—— 工程編譯的 “智能指揮官” 1. 為什么需要 Makefile&#xff1f; 手動編譯的痛點&#xff1a;當工程包含數十個源文件時&#xff0c;每次修改都需重復輸入冗長的編譯命令&#xff08;如gcc file1.c file2.c -o app&#xff09;&#xff0c;…

Python-Django+vue二手電子設備交易平臺功能說明

?(^_-) 上千個精美定制模板,各類成品Java、Python、PHP、Android畢設項目,歡迎咨詢。 ?(^_-) 程序開發、技術解答、代碼講解、文檔,??文末獲取源碼+數據庫+文檔?? ??軟件下載 | 實戰案例 ??文章底部二維碼,可以聯系獲取軟件下載鏈接,及項目演示視頻。 本項目…

數據庫管理工具實戰:IDEA 與 DBeaver 連接 TDengine(二)

五、DBeaver 連接 TDengine 實戰 5.1 安裝 DBeaver 下載安裝包&#xff1a;訪問 DBeaver 官方網站&#xff08;https://dbeaver.io/download/ &#xff09;&#xff0c;根據你的操作系統選擇合適的安裝包。如果是 Windows 系統&#xff0c;下載.exe 格式的安裝文件&#xff1…

Spring Boot接口返回Long類型的數據時丟失精度的全局處理

1、問題 當實體類中的字段為Long類型時&#xff0c;通過Ajax請求返回給前段&#xff0c;在js中數據會丟失精度 直接通過postman請求或通過瀏覽器請求&#xff0c;看下響應則不會丟失精度 2、處理方式 1、使用JsonSerialize注解 JsonSerialize(using ToStringSerializer.…

英偉達Llama-3.1-Nemotron-Ultra-253B-v1語言模型論文快讀:FFN Fusion

FFN Fusion: Rethinking Sequential Computation in Large Language Models 代表模型&#xff1a;Llama-3.1-Nemotron-Ultra-253B-v1 1. 摘要 本文介紹了一種名為 FFN Fusion 的架構優化技術&#xff0c;旨在通過識別和利用自然并行化機會來減少大型語言模型&#xff08;LLM…

Django學習記錄-1

Django學習記錄-1 雖然網上教程都很多&#xff0c;但是感覺自己記錄一下才屬于自己&#xff0c;之后想找也方面一點&#xff0c;文采不佳看的不爽可繞道。 參考貼 從零開始的Django框架入門到實戰教程(內含實戰實例) - 01 創建項目與app、加入靜態文件、模板語法介紹&#xff…

Python爬蟲第7節-requests庫的高級用法

目錄 前言 一、文件上傳 二、Cookies 三、會話維持 四、SSL證書驗證 五、代理設置 六、超時設置 七、身份認證 八、Prepared Request 前言 上一節&#xff0c;我們認識了requests庫的基本用法&#xff0c;像發起GET、POST請求&#xff0c;以及了解Response對象是什么。…

Python 要致富先修路

今天準備在原有基礎上重新深入學習并記錄python學習進程。 # 整體思路 不廢話&#xff1a; 階段1&#xff1a;精選入門電子教程堅持學習&#xff1b; 階段2&#xff1a;跟著教程學習代碼思維&#xff0c;做好學習筆記并構建知識庫方便以后速查&#xff1b; 階段3&#xff…

微服務無感發布實踐:基于Nacos的客戶端緩存與故障轉移機制

微服務無感發布實踐&#xff1a;基于Nacos的客戶端緩存與故障轉移機制 背景與問題場景 在微服務架構中&#xff0c;服務的動態擴縮容、滾動升級是常態&#xff0c;而服務實例的上下線需通過注冊中心&#xff08;如Nacos&#xff09;實現服務發現的實時同步。但在實際生產環境…

2025年的Android NDK 快速開發入門

十年前寫過一篇介紹NDK開發的文章《Android實戰技巧之二十三&#xff1a;Android Studio的NDK開發》&#xff0c;今天看來已經發生了很多變化&#xff0c;NDK開發變得更加容易了。下面就寫一篇當下NDK開發快速入門。 **原生開發套件 (NDK) **是一套工具&#xff0c;使開發者能…

Shell 編程之條件語句

目錄 條件測試操作 文件測試 整數值比較 字符串比較 邏輯測試 if 條件語句 if語句的結構 1、單分支 if 語句 2、雙分支 if 語句 3、多分支 if 語句 if語句應用實例 1、單分支 if 語句應用 2、雙分支 if 語句應用 3、多分支 if 語句應用 case 分支語句 case語句的結構 case語…