C++知識點總結篇

来源:https://www.cnblogs.com/cunyu1943/archive/2019/09/07/11483466.html
-Advertisement-
Play Games

const在不同位置時的不同意義 指針類型前:聲明一個指向常量的指針,程式中不能通過指針來改變它所指向的值,但指針本身的值可以改變,即指針可以指向其他數據; \" "號和指針名之間,聲明一個指針常量(常指針),指針本身的值不可改變,即不能指向其他數據,但指向的數據的值可以改變; 兩個地方都加,聲明指 ...


const在不同位置時的不同意義

  • 指針類型前:聲明一個指向常量的指針,程式中不能通過指針來改變它所指向的值,但指針本身的值可以改變,即指針可以指向其他數據;
  • "*"號和指針名之間,聲明一個指針常量(常指針),指針本身的值不可改變,即不能指向其他數據,但指向的數據的值可以改變;
  • 兩個地方都加,聲明指向常量的指針常量,指針本身的值不可改變,指向的數據也不能通過指針改變;

函數指針

  • 使用函數指針之前,必須先賦值,使它指向一個函數入口地址,賦值語法格式為:函數指針名 = 函數名,其中函數名代表的函數必須是一個已經定義過的,和函數指針具有相同返回類型的函數,指針調用函數格式:(*指針變數)(實參列表);

訪問許可權

  • public:可被任意實體訪問;
  • protected:只允許本類及子類的成員函數訪問;
  • private:只允許本類的成員函數訪問;

構造函數

  • 創建對象時,自動調用構造函數,不能在程式中直接調用,可有任意類型參數,但不能有返回類型;
  • 構造函數作用:為對象分配空間、為數據成員賦初值、請求其他資源;
  • 構造函數工作:初始化虛函數表、建立基類對象、建立非靜態數據成員對象、安置虛基類對象信息、執行構造函數體中的代碼;
  • 若一個類中沒有定義構造函數,編譯器會自動生成不帶參數的預設構造函數,格式為:
<類名>::<預設構造函數名>()
{
}

析構函數

  • 析構函數作用:清除對象、釋放記憶體;
  • 析構函數工作:執行析構函數中的代碼、將對象占據的存儲空間歸還系統、做公共及用戶要求的善後工作;
  • 析構函數無參數和返回值,一個類中只能定義一個析構函數,故不能重載,格式為:
~<類名>();

記憶體佈局

  • 全局數據區:存放全局變數、靜態數據、常量;
  • 代碼區:存放類成員函數、其他函數代碼;
  • 棧區:存放局部變數、函數參數、返回數據、返回地址;
  • 堆區:自由存儲區;

運算符重載重載形式

  • 重載為類的成員函數,參數個數比原來的運算數少一個
<函數類型> operator <運算符> (<形參列表>)
{
<函數體>;
}
  • 重載為類的友元函數,參數個數與原運算數個數一樣多;
friend <函數類型> operator <運算符> (<形參列表>)
{
<函數體>;
}
  • 函數重載:返回值類型可以相同可以不同,但形參列表一定不同;

靜態數據成員

  • 初始化格式:<類型><類名>::<靜態數據成員>=<值>;
  • 引用格式:<類名>::<靜態數據成員>;

繼承方式

  • 私有繼承private:父類的公有成員和保護成員作為子類的的私有成員,且不能被子類的派生類訪問;
  • 公有繼承public:父類的公有成員和保護成員作為子類的成員時,仍保持原有狀態,父類私有成員仍為私有;
  • 保護繼承protected:父類的公有成員和保護成員成為子類的保護成員,且只能被他的派生類成員函數或友元訪問,父類私有成員仍為私有;

派生類構造函數調用順序:

  • 調用基類的構造函數,調用順序按繼承時說明的順序;
  • 調用子對象類的構造函數,調用順序按在類中說明的順序;
  • 派生類構造函數體中內容;

函數模版

template < 模板形參表 >template <typename T>
返回值類型 函數名(形式參數列表)
{
    函數體語句
}
例:
template <typename T>
void swap( T& v1, T& v2)
{
    T temp;
    temp = v1;
    v1 = v2;
    v2 = temp;
}

虛函數

  • 虛函數必須是類的成員函數,不能是友元,但可以是另一個類的友元,不能為全局函數,也不能為靜態函數,析構函數可以為虛函數,但構造函數不能為虛函數;

變數初始化

  • 局部變數:定義時,系統不會進行初始化;
  • 全局變數:定義時,系統自動初始化,

友元函數

  • 在類中定義過,但不是成員函數,定義在類外部,但有權訪問類中成員;

this指針

  • 只有成員函數才有this指針,友元函數沒有this指針;

靜態成員函數與普通成員函數區別:

  • 靜態成員函數沒有this指針,只能訪問靜態成員(包括靜態成員變數和靜態成員函數);
  • 普通成員函數有this指針,可以訪問類中任意成員,而靜態成員函數無this指針;
    微信公眾號:村雨1943
    創作不易,未經同意,轉載請註明出處~

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

-Advertisement-
Play Games
更多相關文章
  • 里氏替換原則: 子類應當可以替換父類並出現在父類能夠出現的地方。比如:公司搞年度派對,都有員工都可以抽獎,那麼不管是新員工還是老員工,也不管是總部員工還是外派員工,都應當可以參加抽獎。 里氏替換至少包含一下兩個含義: 1、里氏替換原則是針對繼承而言的,如果繼承是為了實現代碼重用,也就是為了共用方法, ...
  • 版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/m0_37609579/article/details/99609574 版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權 ...
  • 開始之前需要準備好malab,中國地圖shp文件,m_map工具包。 中國地圖shp文件可以在下麵的鏈接中下載: https://gadm.org/download_country_v3.html 本文藉鑒了下麵鏈接中教程,該方法為matlab自帶的畫圖工具包繪製方法,在我電腦上geoshow命令運 ...
  • 最近在整理Java基礎知識的面試題,看到了一個題目的答案不夠準確,這裡跟大家分享一下。 一、面試題的小錯誤 對於TreeSet和TreeMap來說,元素應該是無序(指元素的存取)而不是有序的,而在表中它可能想表達的是可以排序,不夠嚴謹,嚴格來講 元素的有序≠可以排序。元素的存取有序和排序本質上應該是 ...
  • 1.1.類的定義 創建類 創建對象 1.2.private關鍵字 1.3.構造方法 1.4.Scanner類 1.5.Random類 1.6.ArrayList集合 1.7.String類 ...
  • 二分查找:兩種方式: 非遞歸方式和遞歸方式主要思路: 對於已排序的數組(先假定是從小到大排序), 先定義兩個"指針", 一個"指向"首元素low, 一個"指向"末尾元素high. 然後, 開始折半比較, 即讓要查找的數與數組中間的元素(索引為 low+high/2)比較. 若要查找的數比中間數小, ...
  • 前言 - 簡介 我們在寫代碼的過程中, 不可避免的重度依賴所處的開發環境. 本文重點帶大家在 Window 搭建 C 簡單控制台項目. 當作存檔, 用於記錄項目搭建各種重覆操作. 在詳細過程之前, 我們約定下基礎環境 Best new version Window Best new version ...
  • lambda是表達式,用於創建匿名函數,可以和filter、map、reduce配合使用。 本文環境Python3.7。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...