C++相比于C語言增加了哪些概念?

C++相比于C語言增加了哪些概念?

作者將狼才鯨
創建日期2025-06-17
  • CSDN閱讀地址:C++相比于C語言增加了哪些概念?
  • Gitee源碼目錄:qemu/demo_代碼示例/02_C++_Class

  • 目標受眾:熟悉C語言,對C++完全不了解,但又想熟悉一下C++語言的人;

  • 參考網址:

    • 【C/C++語言】class的定義和基礎用法
    • C++相比于C語言增加的8個小特性(詳解)
  • C++雖然是面向對象的,但是它的第一個函數,main()函數卻是和C語言一樣面向過程的;

  • 基礎概念:

    • 類 Class:例如聲明一個Class Demo;類似于C語言中的結構體;聲明表示還沒有創建實體,不占內存;
    • 私有變量 private:類似于C語言模塊內部static全局變量;
    • 公共變量 public:類似于C語言模塊中接口函數;
    • 構造函數:Demo (int aa) {a = aa;} 定義類時會自動執行的初始化函數,C語言中沒有此概念;
      • Demo(int aa = 100): a(aa) {} 可以直接用默認值初始化;
      • 構造函數中: 冒號后面的a(aa) 類似于函數的這種模式其實并不是函數,而只是賦值,類似于aa = a;
    • 析構函數,~Demo:同上,在類被delete時自動調用;
    • Class聲明中直接實現函數: void geta(int b) {a = b;} 類似于C語言.h頭文件中的inline內聯函數;
    • 友元函數 friend:稍微突破模塊化的結構;類似C語言中的全局變量和全局函數;
      • 可以簡單的理解為即使定義了多個類,但里面每個類中執行友元函數都是執行的同一個全局接口函數;
      • 在類外未定義該類時也能直接調用類里的函數,而該函數不能操作Class里面的局部變量;
    • 命名空間 namespace和兩個冒號::的操作符:using namespace std; std::cout 一組類組成的模塊集合,并且里面有些函數是無需定義和初始化就能直接使用的;同時命名空間也可以用來避免命名沖突;
    • 域的概念:可以把一個.cpp文件就當成一個域,類似于把一個.c文件當成一個模塊;
    • 基類派生類引用轉換(父類和子類):static_cast;類似于C語言中各種結構體入口地址的計算和結構體變量類型強制轉換;
    • 數據類型轉換:例如static_cast<float> a;其中a變量是double類型;static_cast<float> a就類似于C語言中的(float)a;
    • 引用&:可以簡單的將其當成C語言中的指針*,但是它們還有些不一樣,需要在實際使用中慢慢體會;
      • func(Demo &d); d.a; 使用引用的元素時,它的元素調用不用->,而使用. 和C語言中有點不一樣;
      • 引用在定義時必須同步初始化,類似于C語言中不允許出現野指針,指針必須要賦分配以后的初值;
      • 引用初始化后不能再更改對象,而指針可以指向這個指向那個,也可以自增自減等;
    • 操作符重載 operator+ =等:例如實現兩個類的加減乘除運算等;
    • this->:在類的實現函數中要調用自己類的其它變量時,使用this->;
    • 派生:使用:冒號派生成子類,類似于C語言中結構體內嵌套結構體,被嵌套在內部的是父類,外面更大的結構體是子類;
      • 與C語言不同的是,子類不光繼承了父類,還可以改寫和重載父類中的函數(C++中稱為方法);
    • 繼承:父類的初始化方法或函數在子類中能直接用,這叫繼承;
      • 多繼承,一個子類可以包含多個父類;
    • 三大類型(封裝、繼承、多態):把一個Class當成一個全私有的結構體,要讀寫變量只能通過調用函數來實現,這就是封裝;
      • 父類(基類)中的函數可以被子類(派生類)重寫或重載,這個就叫多態;
    • 虛類型 virtual:因為子類中經常會重載父類中的函數,所以干脆父類中把可能會重載的函數加上virtual 來指明,有時甚至自己干脆都不實現了;
    • 類的定義 new:可以直接Class AA{}; AA a; 也可以AA *p_a = new AA; 需要有個概念是new一個類時里面的構造函數會自動運行,這和C語言很不一樣;
    • 名詞概念:類中的內容稱為類的成員,變量稱為類的屬性或成員變量,類中的函數稱為類的方法或者成員函數;因此,忘掉C語言中的全局變量、私有變量、函數的概念,開始使用屬性和方法;
    • protected:和private私有類似;
    • 類的實例化:用類創建對象,類似于C語言中的定義(與定義相對應的就是聲明);
    • 類空間的釋放 delete:
    • auto變量:自動識別數據的類型;
    • 增加nullptr空指針關鍵字;
    • 異常處理:try、catch、throw
    • 泛型編程,模板template:
      • template ,有模板函數和模板類;類似于C語言中用宏定義拼接生成多個類似的結構體;
      • 模板需要被實例化;
    • 標準模板庫(STL):容器vector、list等,迭代器iterator等
    • Lambda 表達式:auto func = [](int x) { return x * x; };
    • explicit關鍵字:用于修飾單參數構造函數或轉換構造函數,禁止編譯器進行隱式類型轉換,避免意外的行為

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

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

相關文章

HarmonyOS5 分布式測試:斷網情況支付場景異常恢復驗證

以下是針對HarmonyOS 5分布式事務在斷網支付場景下的異常恢復驗證全流程方案&#xff0c;綜合關鍵技術與測試策略&#xff1a; 一、核心事務機制驗證 ?兩階段提交&#xff08;2PC&#xff09;協議? 模擬支付流程中網絡中斷&#xff0c;驗證事務協調者能否正確處理預提交與回滾…

【狂飆AGI】第5課:前沿技術-文生圖(系列1)

目錄 &#xff08;一&#xff09;繪畫本質&#xff08;二&#xff09;國內外AI轉繪展&#xff08;三&#xff09;創作思路&#xff08;四&#xff09;美學理論&#xff08;1&#xff09;不可能美學&#xff08;2&#xff09;趨無限美學&#xff08;3&#xff09;反物理美學&…

發那科A06B-6290-H124 伺服驅動器

?FANUC A06B-6290-H124 伺服驅動器核心性能解析? ?一、核心控制能力? ?多模式精密控制? 位置控制?&#xff1a;支持高精度旋轉角度/直線位移調節&#xff08;分辨率達脈沖級&#xff09;&#xff0c;適用于數控機床定位&#xff08;誤差0.01mm級&#xff09;和機器人軌…

Spring Boot 項目啟動優化

Spring Boot 項目啟動優化是一個非常重要的話題&#xff0c;尤其是在微服務和云原生環境下&#xff0c;快速啟動意味著更快的部署、更高效的彈性伸縮和更好的開發體驗。 下面我將從分析診斷、優化策略和終極方案三個層面&#xff0c;為你提供一個全面、可操作的優化指南。 一、…

「爬取豆瓣Top250電影的中文名稱」數據采集、網絡爬蟲

- 第 108 篇 - Date: 2025 - 06 - 16 Author: 鄭龍浩&#xff08;仟墨&#xff09; 文章目錄 **任務&#xff1a;爬取豆瓣Tap250電影的中文名稱****代碼****實現效果** 任務&#xff1a;爬取豆瓣Tap250電影的中文名稱 代碼 # 豆瓣前Tap 250 import requests from bs4 import…

MySQL 多表查詢、事務

1.多表查詢的分類 1.1 內連接 在 MySQL 中&#xff0c;內連接&#xff08;INNER JOIN&#xff09;返回的是兩個表中滿足連接條件的記錄的交集。這個“交集”不是指整個表&#xff0c;而是指符合連接條件的行組合&#xff0c;也就是A表和B表中滿足我們使用on指定條件的記錄。圖…

CSP-J 2020 入門級 第一輪(初賽) 答案及解析

CSP-J 2020 入門級 第一輪&#xff08;初賽&#xff09; 答案及解析 在內存儲器中每個存儲單元都被賦予一個唯一的序號&#xff0c;稱為&#xff08;&#xff09;。 A. 地址 B. 序號 C. 下標 D. 編號 答: A 計算機中每個存儲單元都是1字節&#xff0c;都有唯一的地址。 編譯器…

Flutter包管理與插件開發完全指南

Flutter作為Google推出的跨平臺移動應用開發框架&#xff0c;其強大的生態系統離不開完善的包管理機制和豐富的插件支持。本文將全面介紹Flutter中的包管理體系和插件開發實踐&#xff0c;幫助開發者高效管理項目依賴并擴展應用功能。 一、Flutter包管理基礎 1.1 包管理概述 …

【視頻直播出海】阿里云ApsaraVideo Live:從零搭建全球直播平臺的“星際航行”指南!

【視頻直播出海】阿里云ApsaraVideo Live&#xff1a;從零搭建全球直播平臺的“星際航行”指南&#xff01; 在全球化浪潮的推動下&#xff0c;視頻直播行業正以前所未有的速度跨越國界&#xff0c;成為連接世界的“數字新橋梁”。對于渴望拓展海外市場的企業而言&#xff0c;…

OAuth2中的Token

兩個不同的Token OAuth2 中主要有兩個不同的Token, 其中的區別為是否與用戶相關聯, 即與用戶相關的用戶Token, 和與客戶端相關的客戶端Token, 可以通過用戶Token, 查詢到用戶的相關信息, 客戶端Token與用戶無關, 一般只用于客戶端認證 用戶Token 獲取用戶Token一般有兩個方式…

使用 FastMCP 實現 Word 文檔與 JSON 數據互轉的 Python 服務

一、項目背景 本文分享一個基于 FastMCP 框架實現的文檔處理服務&#xff0c;可實現 Word 文檔&#xff08;.docx&#xff09;與 JSON 數據格式的雙向轉換。通過此服務&#xff0c;開發者可以輕松實現文檔內容提取、結構化數據填充、樣式模板復用等功能&#xff0c;適用于自動…

Vue3輪播圖組件,當前輪播區域有當前圖和左右兩邊圖,兩邊圖各顯示一半,支持點擊跳轉和手動滑動切換

功能&#xff1a; 自動循環播放&#xff08;到達末尾后回到第一張&#xff09;、可設置切換間隔時間&#xff08;interval屬性&#xff09; 左右導航按鈕&#xff08;可自定義顯示/隱藏&#xff09; 點擊底部指示器跳轉到指定幻燈片、且位置可調&#xff08;輪播圖內部/外部&…

350+交付案例,高質量低成本構建智慧園區數字孿生交付新范式

在智慧園區建設領域&#xff0c;數字孿生技術正成為推動園區智能化轉型的核心引擎。山東融谷信息憑借其全要素、全周期、全方位的數字孿生交付能力&#xff0c;已成功交付350余個項目&#xff0c;覆蓋產業園區、智慧樓宇、智慧社區等多元場景&#xff0c;低成本高質量交付&…

OpenCV 圖像像素類型轉換與歸一化

一、知識點 1、OpenCV支持多種數據類型&#xff0c;每種類型都對應著不同的取值范圍。 (1)、CV_8U取值范圍[0, 255]。 (2)、CV_16U取值范圍[0, 65535]。 (3)、CV_32F取值范圍[0, 1]。 2、OpenCV提供convertTo()函數來轉換數據類型&#xff0c;提供normalize()函數來改…

機器學習算法_支持向量機

一、支持向量機 支持向量機只能做二分類任務 SVM全稱支持向量機&#xff0c;即尋找到一個超平面使樣本分成兩類&#xff0c;且間隔最大 硬間隔&#xff1a;如果樣本線性可分&#xff0c;在所有樣本分類都正確的情況下&#xff0c;尋找最大間隔&#xff1b;如果出現異常值或樣…

Linux : echo ~ tail 重定向符

&#x1f680; Linux 常用命令詳解&#xff1a;echo、tail 與重定向符號全解析&#xff08;含通俗案例&#xff09; &#x1f4c5; 更新時間&#xff1a;2025年6月17日 &#x1f3f7;? 標簽&#xff1a;Linux基礎 | Shell命令 | echo | tail | 輸出重定向 | Linux入門 文章目錄…

uniapp的更新流程【安卓、IOS、熱更新】

UniApp應用更新方案 兩種更新方式 APP全量升級&#xff1a;需要重新下載安裝包熱更新&#xff1a;通過下載wgt資源包實現&#xff0c;用戶只需重啟應用 Android更新實現 用戶需要授權安裝權限&#xff0c;流程為下載APK后自動彈出安裝界面 var dtask plus.downloader.cre…

火山引擎解碼生態型增長鐵律

“技術流量與力量的崛起&#xff0c;本質上是一場生態規模的競賽。每次浪潮的排頭兵&#xff0c;都是指尖沾著代碼的開發者——互聯網時代的Linux社區讓開源席卷全球&#xff0c;移動互聯網的App Store催生百萬開發者&#xff0c;而今天&#xff0c;大模型正在用API重構產業。”…

警惕GO的重復初始化

go的初始化方式有很多種&#xff0c;在某些情況下容易引起重復初始化導致錯誤。 事例如下&#xff1a; 當使用gorm連接數據庫時定義了全局DB var DB *gorm.DB 但是在后面某個函數內部初始化時導致DB重新初始化變成了局部變量&#xff0c;導致原來的全局變量DB還是nil func I…

python校園服務交流系統

目錄 技術棧介紹具體實現截圖系統設計研究方法&#xff1a;設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理&#xff0c;難度適中&#xf…