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

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

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

那么開啟正題

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

1.繼承的概念及定義

1.1繼承的概念

繼承機制是面向對象程序設計使代碼可以復用的最重要的手段,它允許程序員在保持原有類特性的基礎上進行擴展,增加功能,這樣產生的新的類叫做派生類。繼承呈現了面向對象程序組設計的層次結構,體現了由簡單到復雜的認識過程。以前我們接觸到的復用都是函數復用,繼承是類設計層次的復用

1.2繼承的定義

1.2.1定義格式

我們來看下面的代碼

class Person
{
public:int _age;
};class Student : public Person
{
public:int _stuid;
};

這段代碼中Student就是派生類(子類),public就是繼承方式,Person就是基類(父類)

1.2.2繼承關系和訪問限定符

在學習封裝時候我們了解到訪問限定符有三種

public訪問,protected訪問,private訪問

與此對應的,繼承方式也有三種

public繼承,protected訪問,private訪問

1.2.3繼承父類成員訪問方式的變化

以前我們說protected(保護)和private(私有)暫時沒有區別,而在繼承這里就體現出來了區別

在public繼承下,子類中,父類的private成員是無法訪問的,而protected成員是可以訪問的

不同的繼承方式與不同的訪問限定符,會是子類對父類的訪問不一樣,下面我們給出規律

父類的private成員在子類中無論以任何方式繼承都是無法訪問的

對于其他的,我們有下面的公式

父類成員在子類中的訪問方式 == Min(成員在父類中的訪問限定符,繼承方式)

(public < protected < private)

注意:
1.?使用關鍵字class時默認繼承方式是private,使用struct時默認繼承方式時public,不過最好顯式給出繼承方式

2.實際運用中一般都是public繼承,幾乎很少有其他兩種繼承出現,我們也不提倡(維護性不強)

2.父類和子類對象賦值轉換

1.子類對象可以賦值給父類的對象 / 父類的指針 / 父類的引用。(我們叫切割或者切片)

2.父類對象不能賦值給子類對象

class Person
{
protected:int _age = 10;
};class Student : public Person
{
public:int _stuid;
};void Test1()
{Student s;// 1.子類對象可以賦值給父類的對象 / 父類的指針 / 父類的引用。// (我們叫切割或者切片)Person p = s;Person* pp = &s;Person& rp = s;// 2.父類對象不能賦值給子類對象s = p;(err) 
}

3.繼承中的作用域

1.在繼承體系中父類和子類都有獨自的作用域

2.父類和子類有同名成員,子類成員將屏蔽父類對同名成員的直接訪問,這種情況叫做隱藏(也叫做重定義)

3.如果是成員函數的隱藏,只要是函數名相同就構成隱藏

4.實際中繼承體系里,最好不要定義同名成員

class A
{
public:void Func(int i = 10){cout << "A::Func(int)" << endl;}void Func(char ch = 'a'){cout << "A::Func(char)" << endl;}
};class B : public A
{
public:void Func(int i){cout << "B::Func()" << endl;}
};void Test2()
{A a;B b;a.Func(1);a.Func('a');b.Func(1);
}

?上面的幾個Func分別構成重構和隱藏

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

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

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

相關文章

JDK時間

Date 全世界的時間&#xff0c;有一個統一的計算標準。 世界標準時間&#xff1a;格林尼治時間/格林威治時間簡稱GMT&#xff0c;目前時間標準時間已經替換為&#xff1a;原子鐘。 中國標準時間&#xff1a;世界時間8 時間換算單位&#xff1a; 一秒等于一千毫秒 一毫秒等于一…

CDC作業歷史記錄無法刪除問題

背景 數據庫開啟CDC功能后&#xff0c;每天會生成大量的歷史記錄&#xff0c;即使達到參數“每個作業的最大歷史記錄“的閾值后也不會被刪除&#xff0c;導致其它作業的歷史記錄被刪除&#xff0c;無法查看以前的執行情況&#xff0c;非常不方便。 現象 數據庫開啟CDC后會創建…

【MATLAB源碼-第147期】基于matlab的QPSK調制解調在AWGN信道,瑞利信道,萊斯信道理論與實際誤碼率對比仿真。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 四相位移鍵控&#xff08;QPSK&#xff0c;Quadrature Phase Shift Keying&#xff09;是一種重要的數字調制技術&#xff0c;它通過改變信號的相位來傳輸數據。與其他調制技術相比&#xff0c;QPSK在相同的帶寬條件下能夠傳…

Linux命名管道

Linux匿名管道-CSDN博客 目錄 1.原理 2.接口實現 3.模擬日志 Linux匿名管道-CSDN博客 這上面叫的是匿名管道&#xff0c;不要將兩者搞混&#xff0c;匿名管道說的是兩個有血緣關系的進程相互通信&#xff0c;但是命名管道就是兩個沒有關系的管道相互通信。 1.原理 和匿名…

高斯擴散過程

高斯擴散過程是一種數學模型&#xff0c;用于描述某些隨機現象的時間演化&#xff0c;其中這些現象的概率密度函數&#xff08;PDF&#xff09;符合高斯分布&#xff0c;也稱為正態分布。在物理和工程學領域&#xff0c;此類過程通常被用來描述熱擴散、粒子擴散、概率密度演變等…

springboot/ssm公司資產網站Java企業資產統計管理系統web

springboot/ssm公司資產網站Java企業資產統計管理系統web 基于springboot(可改ssm)vue項目 開發語言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服務器&#xff1a;tomcat 數據庫&#xff1a;mysq…

藍橋杯刷題--python-16

562. 壁畫 - AcWing題庫 T=int(input()) j=1 while(j<=T): N = int(input()) a=input() s = [0]*(N+1) # 求前戳和 for i in range(1, N + 1): s[i] = int(a[i-1]) + s[i - 1] # 枚舉 # 區間 max_ = float(-inf) k = (N + 2 - …

編譯鏈接實戰(25)ThreadSanitizer檢測線程安全

ThreadSanitizer&#xff08;又稱為TSan&#xff09;是一個用于C/C的數據競爭檢測器。在并發系統中&#xff0c;數據競爭是最常見且最難調試的錯誤類型之一。當兩個線程并發訪問同一個變量&#xff0c;并且至少有一個訪問是寫操作時&#xff0c;就會發生數據競爭。C11標準正式將…

【電路筆記】--RC網絡-RC微分器

RC微分器 文章目錄 RC微分器1、概述2、RC微分器電路3、單脈沖 RC 微分器4、RC 微分器示例5、總結無源 RC 微分器是一個串聯 RC 網絡,可產生與微分數學過程相對應的輸出信號。 1、概述 無源 RC 微分器只不過是與電阻串聯的電容,這是一種與頻率相關的器件,其電抗與固定電阻串…

前端實現瀏覽器打印

瀏覽器的print方法直接調用會打印當前頁面的所有元素&#xff0c;使用iframe可以實現局部打印所需要的模塊。 組件printView&#xff0c;將傳入的信息放入iframe中&#xff0c;調用瀏覽器的打印功能 <template><div class"print"><iframeid"if…

馬斯克指控OpenAI違背成立協議,要求恢復開源;Automattic否認向AI公司出售用戶數據

&#x1f989; AI新聞 &#x1f680; 馬斯克指控OpenAI違背成立協議&#xff0c;要求恢復開源 摘要&#xff1a;馬斯克近日在舊金山高等法院對OpenAI及其CEO阿爾特曼提起訴訟&#xff0c;指控他們違反最初促進AI技術造福人類非營利方向的成立協議。馬斯克聲稱&#xff0c;Ope…

Linux命令-clear命令(清除當前屏幕終端上的任何信息)

說明 clear命令 用于清除當前屏幕終端上的任何信息。 語法 clear示例 直接輸入clear命令當前終端上的任何信息就可被清除。

【JavaSE】時間類相關API以及使用

目錄 時間類相關API 1.Date類 2.SimpleDateFormat類 3.Calendar類 4.JDK8-時區&#xff0c;時間和格式化 5.JDK8-日歷和工具類 時間類相關API 以下內容是通過觀看黑馬java的常見API視頻總結加筆記&#xff0c;其中有JDK7以及以前的時間類&#xff0c;包括&#xff1a;Date&…

我在代碼隨想錄|寫代碼Day30 | 貪心算法 | 435. 無重疊區間,763.劃分字母區間, 56. 合并區間, 738.單調遞增的數字

&#x1f525;博客介紹&#xff1a; 27dCnc &#x1f3a5;系列專欄&#xff1a; <<數據結構與算法>> << 算法入門>> << C項目>> &#x1f3a5; 當前專欄: <<數據結構與算法>> 專題 : 數據結構幫助小白快速入門算法 &…

[HackMyVM]靶場 VivifyTech

kali:192.168.56.104 主機發現 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Unk…

matlab階段學習小節1

數組排序 fliplr()實現數組倒序&#xff0c;但不對大小進行排序&#xff0c;只是元素位置掉頭。 要想實現大小倒序排列&#xff0c;可以先sort()實現正序排列&#xff0c;再用fliplr倒一下 %數組運算 %矩陣 %xAb的解xb/A;(矩陣) %右除運算A/B&#xff0c;左矩陣為被除數&a…

多態——細致講解

&#x1f536;多態基礎概念 ?&#x1f536;概念 ??&#x1f531;多態性 ??&#x1f531;多態——重新(覆蓋) ?&#x1f536;示例 ??&#x1f536;基本使用方法 ??&#x1f536;特例 ???&#x1f531;協變 ???&#x1f531;析構函數重寫 ?&#x1f531;多態原理…

`useState` 和 `useImmer` 都是 React 中用于管理狀態的鉤子

useImmer如何使用&#xff1a; 安裝&#xff1a;yarn add use-immer使用&#xff1a; const [data, updateData] useImmer({fields: [], });updateData((draft) > {draft.fields.splice(index, 1, {id:1});});useState 和 useImmer 都是 React 中用于管理狀態的鉤子&…

redis實戰筆記匯總

文章目錄 1 NoSQL入門概述1.1 能干嘛&#xff1f;1.2 傳統RDBMS VS NOSQL1.3 NoSQL數據庫的四大分類1.4 分布式數據庫CAP原理 BASE原則1.5 分布式集群簡介1.6 淘寶商品信息的存儲方案 2 Redis入門概述2.1 是什么&#xff1f;2.2 能干嘛&#xff1f;2.3 怎么玩&#xff1f;核心…

46、WEB攻防——通用漏洞PHP反序列化原生類漏洞繞過公私有屬性

文章目錄 幾種常用的魔術方法1、__destruct()2、__tostring()3、__call()4、__get()5、__set()6、__sleep()7、__wakeup()8、__isset()9、__unset()9、__invoke() 三種變量屬性極客2019 PHPphp原生類 幾種常用的魔術方法 1、__destruct() 當刪除一個對象或對象操作終止時被調…