c++類【發展】

類的靜態成員(用static聲明的成員),在聲明之外用例單獨的語句進行初始化,初始化時,不再需要用static進行限定。在方法文件中初始化。以防重復。

特殊成員函數

復制構造函數: ??????

????????當使用一個對象來初始化另一個對象時,編譯器將自動創建一個復制構造函數。

????????對于復制構造函數,用于將一個對象復制到新創建的對象中,需要知道2點:何時調用,有何作用。

????????復制構造函數原型:

????????隱式復制構造函數是按值傳遞進行復制的,復制的時候是淺復制。因此,如果有用new創建成員時,不能使用隱式復制構造函數,要定義一個顯示的復制構造函數。處理new開辟的存儲空間,不然后導致異常,復制的數據也不是真的數據,只是復制了地址。定義復制構造函數可以執行深度復制。

賦值運算符重載

??????? c++給類對象賦值,因為自動為類重載了賦值運算符,當然,自動的用起來不會很好用,不一定就能滿足自己的需求,如果不知道自動定義的做了啥,就很難判斷是否需要自己重新定義一個。

??????? 用一個對象賦給一個新對象進行賦值時,不一定會調用賦值運算符,也可能直接用復制構造函數實現。

??????? 和隱匿構造函數一樣,隱式賦值構造函數也只是淺復制,不要復制指針指向的數據。導致數據受損。因此,如果有一些指針成員,就要自定義賦值運算符,來避免淺復制,執行深度復制才能避免異常。

??????? 賦值運算符原型:

??????? 延伸:執行賦值的時候,要意識到,新對象其實已通過構造函數創建好的對象,再執行賦值的,因此,如果構造函數通過new開辟了空間,賦值時,要先delete釋放這個已開辟的空間。不能延用,為啥?因為你不知道原空間有多大,夠不夠用,不如直接釋放,再重新開辟一個新的更安全。

??????? 空指針:nullptr

? 靜態類成員函數 ????

??????? 靜態類成員函數,聲名在公有部分,定義時,在前面加static關鍵字,使用的時候,用類名::函數名。

??????? 靜態成員函數只能訪問靜態成員。。

小結:

??????? 在構造函數用使用了new時要注意

??????? 1、析構函數中要使用delete釋放內存

??????? 2、new和delete要對應,數組還是單個的。new[]和delete[].

??????? 3、如果有多個構造函數,那個用new的方式對一致,要么都是new,要么都是new[]。不然析構的時候要混亂。

??????? 4、定義一個復制構造函數,執行深度復制,避免混亂。

??????? 5、重載賦值運算符,執行深度復制,避免混亂。

返回對象的說明

??????? 返回指向const對象的引用,??????? 返回指向對象的引用,??????? 返回const對象。

??????? 返回對象將調用復制函數,沒有返回引用的效率高。

??????? 至于用哪種,有些是效率考慮,有些是因為輸入參數或其它原因,只能選某一種。

??????? 一般來講,如果返回的是局部對象,就一定要返回對象。如果返回一個沒有公有復制構造函數的類(如ostream類)的對象,就一定要反加引用類型。其它的可以返回對象,也可以返回引用的,優先返回引用,效率高一些。

??????? 類在聲明時可以初始化,與成員初始化列表等價。

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

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

相關文章

寧德時代區塊鏈+數字孿生專利解析:去中心化身份認證重構產業安全底座

引言:當動力電池巨頭瞄準數字孿生安全 2025年5月6日,金融界披露寧德時代未來能源(上海)研究院與母公司寧德時代新能源科技股份有限公司聯合申請的一項關鍵專利——“身份驗證方法、系統、電子設備及存儲介質”。這項技術將區塊鏈…

cesium之自定義地圖與地圖疊加

在appvue中,cesium支持更換不同的地圖資源,代碼如下 <template><div id"cesiumContainer" ref"cesiumContainer"></div> </template><script setup> import * as Cesium from cesium; import "./Widgets/widgets.css&…

STL?string!!!

一、引言 在之前的文章中&#xff0c;我們一同學習了有關類和對象、模板、動態內存管理的相關知識&#xff0c;那么接下來一段時間我們將要趁熱打鐵&#xff0c;一起來手撕C庫中最重要的一個庫----STL中的一些容器&#xff0c;在手撕它們之前&#xff0c;我將先介紹一下對應的容…

低版本GUI配置SAProuter

1、注意配置SAProuter時&#xff0c;必須添加后面的/H/ 如&#xff1a;/H/sap.sapzx.cn/H/ 2、或者有時需要配置service文件&#xff08;C:\WINDOWS \system32\drivers\etc\service&#xff09; sapmsEP1 3600/tcp

springBoot中自定義一個validation注解,實現指定枚舉值校驗

緣由 在后臺寫接口的時候&#xff0c;經常會出現dto某個屬性是映射到一個枚舉的情況。有時候還會出現只能映射到枚舉類中部分枚舉值的情況。以前都是在service里面自行判斷&#xff0c;很多地方代碼冗余&#xff0c;所以就想著弄一個自定義的validation注解來實現。 例如下面某…

MySQL數據庫中篇

#作者&#xff1a;允砸兒 #日期&#xff1a;乙巳青蛇年 四月初九 筆者繼續帶朋友們了解mysql數據庫中篇的內容。多了不說&#xff0c;少了不嘮&#xff0c;咱們直接就開寫。 書接上回筆者在上篇中介紹了什么是數據庫和數據庫的一些基礎的概念&#xff0c;以及mysql數據庫的…

AI如何重塑DDoS防護行業?六大變革與未來展望

隨著AI技術的深度滲透&#xff0c;DDoS防護行業正經歷一場從“規則驅動”到“智能驅動”的范式革命。傳統依賴靜態閾值和人工規則的防御模式已難以應對新型攻擊&#xff0c;而AI的引入不僅提升了檢測精度&#xff0c;更重構了防護體系的底層邏輯。以下是AI帶來的六大核心變革及…

五一作業-day04

文章目錄 1. **ps -ef是顯示當前系統進程的命令,統計下當前系統一共有多少進程**2. **last命令用于顯示所用用戶最近1次登錄情況,awk可以取出某一列,現在要取出last命令第1列并去重統計次數**3. **secure日志是用戶的登錄日志,過濾出secure日志中的Failed password的次數(用課堂…

抽獎系統(基于Tkinter)

一、抽獎規則及使用方法 抽獎規則&#xff1a; 從1-138個號碼中隨機抽獎&#xff0c;共進行n輪抽獎&#xff0c;每個號碼僅有一次中獎機會&#xff0c;即已中獎的號碼不會再次中獎。 使用方法&#xff1a; 要求開始抽獎后屏幕上隨機滾動顯示中獎號碼&#xff0c;點擊“STOP”之…

window 系統 使用ollama + docker + deepseek R1+ Dify 搭建本地個人助手

1. 下載ollama &#xff0c;官網 下載地址&#xff1a;Download Ollama on macOS&#xff0c;選擇 Window 下載完成后&#xff0c;可在終端 使用 ollama --version 2. 下載 本地大模型&#xff0c;這里下載deepseek r1 7b 3.下載Embed模型 Embed模型 是文本工具向量化的核心工…

【學習筆記】 強化學習:實用方法論

作者選擇了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰寫的《Deep Learning》(人工智能領域的經典教程&#xff0c;深度學習領域研究生必讀教材),開始深度學習領域學習&#xff0c;深入全面的理解深度學習的理論知識。 之前的文章參考下面的鏈接&#xf…

益鑫通汽車連接器可替代Molex,JST

# 探秘優質車規連接器 在汽車向新能源和智能化發展的進程中&#xff0c;車規連接器對汽車電子系統的穩定運行至關重要。有企業憑借技術與創新&#xff0c;在該領域表現出色。其車規連接器類型多樣&#xff0c;能滿足汽車不同系統連接需求。 一款2.54Pitch線對板連接器&#xff…

【WPF】將Bitmap圖像轉換為BitmapImage,并給Image控件顯示圖像

1.C#將Bitmap圖像轉換為BitmapImage&#xff0c;并給Image控件顯示圖像后臺實現 public void InitImage(Bitmap bitmap){try{// 將Bitmap轉換為WPF的BitmapImageBitmapImage bitmapImage;using (MemoryStream memory new MemoryStream()){bitmap.Save(memory, System.Drawing.…

Python從入門到高手8.2節-元組的常用操作符

目錄 ?8.2.1 元組的常用操作符 8.2.2 []操作符: 索引訪問元組 8.2.3 [:]操作符&#xff1a;元組的切片 8.2.4 操作符&#xff1a;元組的加法 8.2.5 *操作符&#xff1a;元組的乘法 8.2.6 元組的關系運算 8.2.7 in操作符&#xff1a;查找元素 8.2.8 五一她玩了個狗吃…

Vue3源碼學習4-effect中為什么使用WeakMap,Set?

文章目錄 前言1. 精細化依賴追蹤2. 高效的依賴收集與觸發3. 自動內存管理&#xff0c;防止內存泄漏4. 支持復雜場景 前言 在 mini vue - effect 實現中 設計&#xff08;WeakMap → Map → Set → effect函數&#xff09;有以下幾個重要原因&#xff1a; 1. 精細化依賴追蹤 W…

TinyML 邊緣智能:在資源受限 MCU 上部署 AI

前言 在物聯網(IoT)和智能邊緣計算的時代浪潮下,TinyML(微型機器學習)正以前所未有的速度改變著我們與設備交互的方式。它將 AI 推理能力放在資源極度受限的 MCU(微控制器)上,兼顧實時性、低功耗和數據隱私,成為智能家居、可穿戴設備、工業檢測等場景的核心技術。盡管…

技術白皮書:Oracle GoldenGate 優勢

本文為技術白皮書Oracle GoldenGate 優勢的翻譯及閱讀筆記。以下注釋中GoldenGate為OGG。 副標題為&#xff1a;Oracle 數據庫的變更數據捕獲 (CDC) 技術比較。版本為July, 2021, Version 2.1。 Oracle GoldenGate 被客戶和分析師公認為功能最齊全、性能最高、最值得信賴的數…

Android控件VideoView用法

一 控件UI <VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter" /> 二 配置 <?xml version="1.0" encoding="u…

React 第三十六節 Router 中 useParams 的具體使用及詳細介紹

一、useParams 的基本用法 用途&#xff1a;用于在組件中獲取當前 URL 的動態路由參數&#xff08;如 /user/:id 中的 id&#xff09;。 import { Routes, Route, useParams } from react-router-dom;// 定義路由 function App() {return (<Routes><Route path"…

C++戰勝白蟻 2024年信息素養大賽復賽 C++小學/初中組 算法創意實踐挑戰賽 真題詳細解析

目錄 C++戰勝白蟻 一、題目要求 1、編程實現 2、輸入輸出 二、算法分析 三、程序編寫 四、運行結果 五、考點分析 六、 推薦資料 1、C++資料 2、Scratch資料 3、Python資料 C++戰勝白蟻 2024年信息素養大賽 C++復賽真題 一、題目要求 1、編程實現 小明因為很長…