C++從零開始的打怪升級之路(day41)

這是關于一個普通雙非本科大一學生的C++的學習記錄貼

在此前,我學了一點點C語言還有簡單的數據結構,如果有小伙伴想和我一起學習的,可以私信我交流分享學習資料

那么開啟正題

今天分享的是關于繼承的知識點

1.派生類的默認成員函數

首先我們來回顧以下默認成員函數是哪幾個

1.構造函數? ? ? ? ? ? ? ? ? ? ?完成初始化工作

2.析構函數? ? ? ? ? ? ? ? ? ? ?完成清理工作

3.拷貝構造函數? ? ? ? ? ? ? 使用同類對象初始化創建新對象

4.賦值重載函數? ? ? ? ? ? ? 把一個對象賦值給另一個對象

5.取地址重載函數? ? ? ? ? ?普通對象取地址

6.const取地址重載函數? const對象取地址

那么,對于派生類,我們的默認成員函數是怎樣的呢

1.派生類的構造函數必須調用基類的構造函數初始化基類的那一部分成員,如果基類沒有默認的構造函數,則必須在派生類構造函數的初始化列表階段顯示調用

2.派生類的拷貝構造函數必須調用基類拷貝構造函數完成基類的拷貝初始化

3.派生類的operator=必須要調用基類的operator=完成基類的復制

4.派生類的析構函數會在被調用完后自動調用基類的析構函數清理基類成員,因為這樣才能保證派生類對象先清理派生類成員,再清理基類成員的順序

5.派生類對象初始化先調用基類構造,再調派生類構造(符合棧的先進后出)

6.派生類對象析構清理先調用派生路析構,再調基類析構(符合棧的先進后出)

7.因為后續一些場景析構函數需要構成重寫,重寫的條件之一是函數名相同(這個我們后面會講 解)。那么編譯器會對析構函數名進行特殊處理,處理成destrutor(),所以父類析構函數不加 virtual的情況下,子類析構函數和父類析構函數構成隱藏關系(多態內容)

class Person
{
public:Person(const char* name = "peter"): _name(name){cout << "Person()" << endl;}Person(const Person& p): _name(p._name){cout << "Person(const Person& p)" << endl;}Person& operator=(const Person& p){cout << "Person operator=(const Person& p)" << endl;if (this != &p)_name = p._name;return *this;}~Person(){cout << "~Person()" << endl;}
protected:string _name; // 姓名
};class Student : public Person
{
public:Student(const char* name, int num): Person(name), _num(num){cout << "Student()" << endl;}Student(const Student& s): Person(s), _num(s._num){cout << "Student(const Student& s)" << endl;}Student& operator = (const Student& s){cout << "Student& operator= (const Student& s)" << endl;if (this != &s){Person::operator =(s);_num = s._num;}return *this;}~Student(){cout << "~Student()" << endl;}
protected:int _num; //學號
};void Test()
{Student s1("jack", 18);Student s2(s1);Student s3("rose", 17);s1 = s3;
}

2.繼承與友元

友元關系不能繼承,也就是說基類友元不能訪問派生類私有和保護成員

很簡單理解,這里不貼代碼了

3.繼承與靜態成員

基類定義了static靜態成員,則整個繼承體系里面只有一個這樣的成員,無論拍成出多少個子類,都只有一個static成員

class Person
{
public:static int _count;
};int Person::_count = 0;class Student : public Person
{
public:int _id;
};void Test()
{Student s1;Student s2;Student s3;cout << Person::_count << endl;s1._count = 1;cout << Person::_count << endl;s2._count = 2;cout << Person::_count << endl;s3._count = 3;cout << Person::_count << endl;
}

新手寫博客,有不對的位置希望大佬們能夠指出,也謝謝大家能看到這里,讓我們一起學習進步吧!

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

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

相關文章

【和鯨冬令營】通過數據打造爆款社交APP用戶行為分析報告

【&#x1f40b;和鯨冬令營】通過數據打造爆款社交APP用戶行為分析報告 文章目錄 【&#x1f40b;和鯨冬令營】通過數據打造爆款社交APP用戶行為分析報告1 業務背景2 數據說明3 數據探索性分析4 用戶行為分析4.1 用戶屬性與行為關系分析4.2 轉化行為在不同用戶屬性群體中的分布…

值類型和引用類型詳解(C#)

可能你對值類型和引用類型還不太了解。 值類型和引用類型&#xff0c;是c#比較基礎&#xff0c;也必須掌握的知識點&#xff0c;但是也不是那么輕易就能掌握&#xff0c;今天跟著我一起來看看吧。 典型類型 首先我們看看這兩種不同的類型有哪些比較典型的代表。 典型值類型…

【云安全】網絡安全領域安全協議

IPSEC協議 IPSec&#xff08;Internet Protocol Security&#xff09;是一種網絡層安全協議&#xff0c;用于在IP通訊過程中確保完整性、認證性和機密性。它通過在標準的IP協議上加入安全機制來實現加密和認證。IPSec主要由兩個協議組成&#xff1a;認證頭&#xff08;AH&…

在Windows 10系統中啟用快速啟動功能

在Windows 10系統中啟用快速啟動功能&#xff0c;可以按照以下步驟進行&#xff1a; 方法一&#xff08;通過設置應用&#xff09;&#xff1a; 點擊任務欄左下角的“開始”按鈕或者按鍵盤上的Win鍵打開“開始”菜單。在“開始”菜單中選擇“設置”圖標&#xff08;齒輪形狀&…

3.3日學習打卡----初學Redis(一)

3.3日學習打卡 目錄&#xff1a; 3.3日學習打卡NoSQL為什么要用NoSQL什么是NoSQL?NoSQL的四大分類關系型數據庫和非關系型數據及其區別NoSQL經典應用 RedisRedis是什么?Linux下安裝RedisDocker下安裝Redis基本知識 NoSQL 為什么要用NoSQL 單機Mysql的美好年代 在90年代&…

Sqlmap進行http頭注入及流量分析

環境準備:構建完善的安全滲透測試環境:推薦工具、資源和下載鏈接_滲透測試靶機下載-CSDN博客 利用 SQLMap 進行 HTTP 頭注入的方式對于 Less-19 注入點的注入 SQLMap 工具我使用kali中自帶的 注入準備 先使用bp將Less-19靶場的包抓下來保存到 txt 文件中,輸入賬號 admin…

Ubuntu23.10禁用Wayland

禁用前 編輯custom.conf文件 sudo vim /etc/gdm3/custom.conf 去掉WaylandEnablefalse前的#號 保存退出 重啟系統 生效: 成功轉換為X11

【LeetCode題解】2809. 使數組和小于等于 x 的最少時間+2788. 按分隔符拆分字符串+410. 分割數組的最大值

文章目錄 [2809. 使數組和小于等于 x 的最少時間](https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/)思路&#xff1a; [2788. 按分隔符拆分字符串](https://leetcode.cn/problems/split-strings-by-separator/)思路&#xff1a; [410. 分割數組的最大…

Leetcoder Day36| 動態規劃part03

343. 整數拆分 給定一個正整數 n&#xff0c;將其拆分為至少兩個正整數的和&#xff0c;并使這些整數的乘積最大化。 返回你可以獲得的最大乘積。 示例 1: 輸入: 2輸出: 1解釋: 2 1 1, 1 1 1。 示例 2: 輸入: 10輸出: 36解釋: 10 3 3 4, 3 3 4 36。說明: 你可以假設 …

如何提取圖片中某個位置顏色的RGB值,RGB十進制值與十六進制的轉換

打開本地的畫圖工具&#xff0c;把圖片復制或截圖粘進去&#xff0c;用顏色提取器點對應的位置就可以提取了。 獲取到的 RGB 值為 (66,133,244) 轉化后的值為 #4285F4。 【內容拓展一】&#xff1a;RGB 十進制值與十六進制的轉換 當我們從 RGB 十進制值轉換為十六進制值時&a…

Yapi部署

【GO開發工程師】Yapi部署 推薦個人主頁&#xff1a;席萬里的個人空間 文章目錄 【GO開發工程師】Yapi部署1、Yapi部署 1、Yapi部署 初始化yapi&#xff1a; git clone https://github.com/Ryan-Miao/docker-yapi.git cd docker-yapi docker-compose upyapi啟動失敗 1.cd進入…

粉絲福利-純凈Windows系統安裝鏡像下載網站

?Windows操作系統鏡像文件是從微軟或其他經過驗證的來源下載正版操作系統安裝介質的關鍵所在。以下是詳細闡述從不同渠道獲取Windows系統鏡像的說明,尤其強調官方和安全的下載途徑。Windows系統鏡像可以從多個可靠來源下載,以下是幾個推薦的選擇: 微軟官方網站 微軟官方網…

對于《幻獸帕魯》這樣的游戲,如何優化服務器性能以提高游戲體驗?

對于《幻獸帕魯》這樣的游戲&#xff0c;如何評估和優化服務器性能以提高游戲體驗&#xff1f; 硬件配置優化&#xff1a;選擇高性能的服務器&#xff0c;如4核16G的幻獸帕魯服務器&#xff0c;這樣可以保證有足夠的計算性能和內存容量來支持游戲的運行。同時&#xff0c;考慮到…

Node.js(六)-數據庫與身份認證

一 、學習目標 ◆ 能夠知道如何配置MySQL數據庫環境 ◆ 能夠認識并使用常見的 SQL語操作數據庫 ◆ 能夠在Express中操作MySQL數據庫 ◆ 能夠了解 Session的實現原理 ◆ 能夠了解JWT的實現原理 二、數據庫的基本概念 1.1 什么是數據庫 數據庫&#xff08;database&#xff09;…

邊緣計算網關的重要作用-天拓四方

隨著物聯網技術的迅猛發展&#xff0c;數據量的爆炸式增長對數據處理和分析提出了更高的要求。邊緣計算網關作為連接物理世界和數字世界的橋梁&#xff0c;正逐漸受到各行業的重視。本文將從行業背景、功能特點以及帶來的效益等方面&#xff0c;探討邊緣計算網關在當前及未來的…

備戰藍橋杯---狀態壓縮DP基礎2之TSP問題

先來一個題銜接一下&#xff1a; 與上一題的思路差不多&#xff0c;不過這里有幾點需要注意&#xff1a; 1.因為某一列的狀態還與上上一行有關&#xff0c;因此我們令f[i][j][k]表示第i行狀態為j,第i-1行狀態為k的最大炮兵數。 因此&#xff0c;我們可以得到狀態轉移方程&…

2024/03/01

控制機械臂 #include<myhead.h> #define SER_IP "192.168.126.2" #define SER_PORT 8888#define CLI_IP "192.168.252.165" #define CLI_PORT 9999int main(int argc, const char *argv[]) {int cfdsocket(AF_INET,SOCK_STREAM,0);if(cfd-1){perror…

成功解決git clone遇到的error: RPC failed; curl 16 Error in the HTTP2 framing layer fatal: expected flush af

成功解決git clone遇到的error: RPC failed; curl 16 Error in the HTTP2 framing layer fatal: expected flush af 問題描述解決方案 問題描述 用git的時候可能會遇到這個問題&#xff1a; (base) zhouzikang7443-8x4090-120:~/project$ git clone https://github.com/123/12…

Windows服務器:通過nginx反向代理配置HTTPS、安裝SSL證書

先看下效果&#xff1a; 原來的是 http&#xff0c;配置好后 https 也能用了&#xff0c;并且顯示為安全鏈接。 首先需要 SSL證書 。 SSL 證書是跟域名綁定的&#xff0c;還有有效期。 windows 下雙擊可以查看相關信息。 下載的證書是分 Apache、IIS、Tomcat 和 Nginx 的。 我…

【leetcode】圓圈中最后剩下的數字

目錄 1. 問題 2. 思路 3. 代碼 4. 運行 1. 問題 本題即為典型的約瑟夫問題&#xff0c;通過遞推公式倒推出問題的解。原始問題是從n個人中每隔m個數踢出一個人&#xff0c;原始問題變成從n-1個人中每隔m個數踢出一個人…… 示例 1&#xff1a; 輸入: n 5, m 3 輸出: 3…