C++筆記(細碎小知識點)1

来源:https://www.cnblogs.com/mzd-ovo/archive/2023/09/22/17723578.html
-Advertisement-
Play Games

1.內聯:寫在類內或外部聲明inline(編譯器判斷是否內聯,不是滿足上述條件就一定內聯),優點更快 2.protected:派生類可以直接調用基類的protected成員 3.class類內預設private,struct內預設public 4.構造函數最優寫法,用初始化(只有構造函數有)效率比在 ...


1.內聯:寫在類內或外部聲明inline(編譯器判斷是否內聯,不是滿足上述條件就一定內聯),優點更快

2.protected:派生類可以直接調用基類的protected成員

3.class類內預設private,struct內預設public

4.構造函數最優寫法,用初始化(只有構造函數有)效率比在函數中寫更高(因編譯器先進行初始化再執行函數)

5.const T: T固定;T const: *固定

6.確實有把構造函數放在private里的需求,如單例模式:通過將構造函數寫在private里來防止該類對象被創建,通過public里的static函數或在聲明static對象時來調用

7.const函數const在函數體{}前加,只能修飾成員函數,不改變數據內容的都要設為const函數

8.如非必要(想保證原數據不變且需要改變數據副本,或源數據在生命周期結束後仍會被使用),都傳入傳出引用# 9.main()方法是固定的:public static void main(String[] args)

9.friend自由取得private成員,這就導致同一個class中的各個示例互為friend

10.類內操作符重載需要預設存在this參數,this由編譯器提供

11.可直接向引用參數中傳值

12.對於有些可以連續調用的函數(如:a+=b+=c;,cout<<a<<b;)要考慮返回值不要用void

13.淺拷貝:指針指向被拷貝對象 深拷貝:將拷貝對象的內容給拷貝

14.三/五法則:如果一個類有非預設的析構函數,則必須有非預設的拷貝構造函數(移動構造函數)和拷貝賦值運算符(和移動賦值運算符)

15.拷貝賦值運算符重載時要檢測是否是自我賦值

16.new是先調用記憶體再構造函數,delete是先析構再釋放記憶體

17.new數組,要delete[]

18.static成員函數只能處理static數據,但可被非static的class對象調用

19.template與template這兩個通用

20.explicit用來修飾單個參數的構造函數,表示該構造函數只能顯式調用,禁止隱式轉換。

21.對於類包類(類a中有類b成員)構造先b後a,析構先a後b

22.delegation可在cpp中實現類似介面的東西,具體為介面類內封裝一個private實現類指針,具體實現功能全藉助這個指針指向的實現類來實現。這會導致拷貝多個對象則會指向同一個實現類對象。

23.對於父類,析構函數必須是虛函數

24.純虛函數:virtual 返回值 function()=0;

25.delegation可實現一份a類數據給多個b類對象使用(a類中包含b類指針數組)

26.私有static成員要先在類外進行全局定義

27.轉換函數operator 類型()const,寫在類內public中,當對象需要隱式類型轉換時編譯器自動調用

28.當需要將其他類型隱式轉換為a類時,編譯器會自動調用符合的a類構造函數(如果有的話)

29.當一條語句同時滿足27,28兩種情況時,會出現歧義,可以通過在構造函數前加explicit來禁止其隱式調用

30.仿指針類(如智能指針,迭代器)類內必會重載 “*” 和 “->”

31.仿函數類類內必會重載“()”

32.函數模板在使用時不必指明“T”,編譯器會進行實參推導,類模板需要

33.模板和重載是編譯時多態,虛函數重寫是運行時多態

34.模板的參數仍可以是模板,特例化時所用的作為參數的模板的參數數量必須定義時作為參數的模板的參數相對應,如:

template<typename T,template<typename T,typename u>class cl>
class a {};
a<int, vector>;

vector與template<typename T,typename u>class cl對應。而vector<vecor>中的vector不是模板參數,因其已經被特例化


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近,某白酒品牌頻頻吸引大眾眼球,白酒與咖啡、巧克力等聯名衍生品一經推出便掀起熱潮。某商品由於太過火爆,甚至一度售罄下架。 不得不說,我國擁有超大規模內需市場,消費潛力巨大。 當前,創新消費場景加上數字化融合轉型,成為酒企品牌開疆擴土、逆勢增長的重要途徑。 如今越來越多的酒企開始擁抱數字化,建立涵蓋 ...
  • 1. 每個人都知道需要備份,但並不是每個人都能意識到需要的是可恢復的備份 1.1. 如果你沒有提前做好備份規劃,也許以後會發現已經錯失了一些最佳的選擇 1.2. 在伺服器已經配置好以後,才想起應該使用LVM,以便獲取文件系統的快照——但這時已經太遲了 1.3. 如果你沒有計劃做定期的恢復演練,當真的 ...
  • 在日常開發中,很多時候需要對數組進行分組,每次都要手寫一個分組函數,或者使用lodash的groupBy函數。好消息是,JavaScript 現在正在引入全新的分組方法:Object.groupBy和Map.groupBy,以後再也不需要手寫分組函數了,目前最新版本的 Chrome(117)已經支持 ...
  • 前言 Vue 3是一個功能強大的前端框架,它引入了一些令人興奮的新特性,其中最引人註目的是ref和reactive。這兩個API是Vue 3中響應式編程的核心,本文將深入探討它們的用法和差異。 什麼是響應式編程? 在Vue中,響應式編程是一種使數據與UI保持同步的方式。當數據變化時,UI會自動更新, ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 使用Canvas繪製一個驗證碼組件 前言 驗證碼,這一日常伴隨我們的要素,是我們線上交互的重要安全保障。你的手機簡訊里是否被它占據半壁江山,今天我們就來聊聊如何在網頁上實現一個簡單的驗證碼組件。大家在登錄網站時為了防止被惡意攻擊或者多次點 ...
  • 搭建後臺管理系統模板 2.1項目初始化 今天來帶大家從0開始搭建一個vue3版本的後臺管理系統。一個項目要有統一的規範,需要使用eslint+stylelint+prettier來對我們的代碼質量做檢測和修複,需要使用husky來做commit攔截,需要使用commitlint來統一提交規範,需要使 ...
  • 一、為什麼要做穩定性建設 1、從熵增定律引出穩定性建設的必要性 物理學上,用“熵”來描述一個體系的混亂程度。卡爾·弗里德曼提出熵增定律,他認為在一個封閉的系統內,如果沒有外力的作用,一切物質都會從有序狀態向無序狀態發展。 如果我們不希望系統變混亂,有什麼辦法呢?答案是對抗熵增定律,對抗熵增定律的方法 ...
  • 不同行業基本都會有自己獨特的業務,甚至同行的不同企業之間的業務邏輯也會相差千里,只有最大程度抽象出通用性、標準性和普適性的系統才能夠成為平臺系統,平臺系統開發的成本和難度可想而知。 個人深度參與或獨立設計開發過的公共服務型平臺系統,主要包括基礎數據平臺、支付平臺、財務平臺、結算平臺、配送平臺、CRM ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...