類之間的縱向關系——繼承

繼承

定義:被繼承的類叫做基類(父類),繼承的類叫派生類(子類),在派生類類名后面加

: 繼承方式 基類

class CFather{};
class CSon:public CFather{};

父類(基類)與子類(派生類)之間的關系:

把一些功能相似的類,類中公共的成員單獨抽離出來,放到一個類中,這個類就是父類

子類如何使用父類對象?:

通過繼承關系,子類可以使用父類的成員。如果子類和父類有同名的成員,默認使用子類的成員,如果想要使用父類的成員,需要在成員名前加上類名::用于顯式的指定區分,

son.m_a; //子類成員
son.CSon::m_a; //子類成員
son.CFather::m_a; //父類成員

?子類繼承父類,相當于將父類的成員包含到自己的類里,所以定義子類對象所占用的空間大小除了子類自身的成員還包括父類的成員。成員在內存空間分布為:先父類成員后子類成員,而每個類中的成員分布與在類中聲明的順序一致。

?

?三種繼承方式:

繼承方式與訪問修飾符一樣,都是三種
繼承方式:描述了父類的成員在子類中所能使用的范圍,即訪問控制。繼承方式和訪問修飾符共同決定了父類成員的訪問權限。

繼承格式:

class 子類名:繼承方式 父類名

class CSonson :public CSon{};

?

private:繼承下
父類子類
private:不可訪問
protected:private:
public:private:
protected:繼承下
父類子類
private:不可訪問
protected:protected:
public:protected:
public:繼承下
父類子類
private:不可訪問
protected:protected:
public:public:

繼承下構造析構執行的順序:

定義子類對象時執行順序:父構造->子構造->孫構造...| ...孫析構->子析構->父析構。

?構造順序說明:

在子類創建對象的時候,執行子類的構造函數(注意這里并不是直接先執行父類的構造函數),但要先執行子類的構造的初始化列表,在初始化列表中會默認調用父類的無參構造初始化父類成員,如果父類只有帶參數的構造,那么需要在子類的初始化參數列表顯示的指定父類的初始化。

析構順序說明:

子類對象的生命周期結束后,因為是子類所以自動調用子類析構,當析構執行完了,才會回收對象分配的空間,當然這個空間包含創建的父類的成員,那么回收父類成員前,自動調用父類的析構。如果是new出來的子類對象,同理。?

?繼承的優點:

多個子類在增加公共方法時,只需要在父類添加一份即可,提高了代碼的復用性,擴展性。

?隱藏

定義

隱藏:在繼承的條件下,父類和子類中有同名的成員,那他們之間的關系稱為隱藏。

如果子類中沒有函數,則他會調用父類的函數,但當調用父類和子類的同名成員方法時,他會調用子類中的函數,將傳輸的參數轉換成子類中的函數所需類型,如果轉換不了則會報錯。父類和子類中,同名的但是參數列表不同的函數,他們之間的關系并不是函數重載的關系,作用域不同,必須使用 類名:: 去區分到底該調用哪個函數。

class CFather {void fun();
};
class CSon :public CFather {void fun(int a); //隱藏關系,自動將父類的成員屏蔽了
};

?注:父類指針不強轉,也可以指向子類對象;而子類的指針必須通過強轉才能指向父
親對象。

?父類指針指向子類對象

CFather * p = new CSon;

?優點:統一多種子類類型,提高代碼的復用性和擴展性
弊端:只能使用父類的成員,不能使用子類的成員

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

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

相關文章

bytetrack漏檢補齊

bytetrack漏檢補齊1.人流慢速運動,跟蹤效果比較好,偶爾有漏檢,跟蹤可以自動補齊。2.快速運動,頻繁遮擋,效果可能不好*如果漏檢,倒著跟蹤,把丟失的檢測框拷貝出來,保留進行跟蹤。有時…

安裝Keycloak并啟動服務(macOS)

前提:電腦已經安裝Java 17 1、下載Keycloak 2、下載完后解壓縮,使用文本編輯器修改配置文件(keycloak/conf/keycloak.conf) # Basic settings for running in production. Change accordingly before deploying the server. # …

汽車動力轉向器落錘沖擊試驗臺

落錘沖擊試驗臺主要用于扣件減振量的測試,采用電動錨鏈提錘結構,控制精度高,定位準確。采用伺服電機減速機驅動,避免提錘加速和到位減速時的沖擊,具有多重安全保護功能,防止二次沖擊裝置。主機框架采用上下…

Linux系統集群部署模塊之Keepalived雙機熱備

目錄 概述 一、keepalived安裝 二、配置文件 三、 其他配置項說明 四、名詞解釋 五、高階使用 1、介紹 2、keepalived主要作用 3、工作在三層、四層和七層原理 4、健康狀態檢測方式 4.1 HTTP服務狀態檢測 4.2 TCP端口狀態檢測(使用TCP端口服務基本上都可…

TDengine 使用最佳實踐(1)

目錄 數據建模 單列模型 多列模型 分庫分表 邊界限制 資源規劃 CPU 主頻 CPU 核數 內存分類 內存計算 CPU 內存比例 磁盤 網絡 下一篇 TDengine 使用最佳實踐(1) 關于 TDengine TDengine 是一款專為物聯網、工業互聯網等場景設計并優化的大數據平臺&am…

Java行為型模式---責任鏈模式

責任鏈模式基礎概念責任鏈模式(Chain of Responsibility Pattern)是一種行為型設計模式,其核心思想是將請求的發送者和接收者解耦,使多個對象都有機會處理請求。這些對象連接成一條鏈,請求沿著鏈傳遞,直到有…

嵌入式學習筆記- 結構體名字被賦值時是整體內容賦值

結構體變量名被賦值時,?不是賦值的地址,而是執行對整個結構體內容的復制(值拷貝)?直接賦值是成員級復制? 當使用 s2 s1; 形式的賦值時(其中 s1 和 s2 是同類型結構體變量),系統會?逐成員復…

基于UDP/IP網絡游戲加速高級擁塞控制算法(示意:一)

/* ███████╗ 基于UDP/IP網絡游戲加速高級擁塞控制算法&#xff08;示意&#xff1a;一&#xff09; ███████╗ */#pragma once#include <iostream> #include <vector> #include <deque> #include <cmath> #include <algorithm> …

【YOLOv11-目標檢測】06-模型部署(C++)

上一節課,我們學習了模型的預測。那么,如何用C++部署呢? 克隆項目 進入cmd,進入自己的項目文件夾,然后git clone項目: git clone https://github.com/Geekgineer/YOLOs-CPP 進入到YOLOs-CPP文件夾: 配置環境 ONNX Runtime 后續構建項目的時候,會自動下載,因此,我…

【第零章編輯器開發與拓展】

前言&#xff1a;對編輯器拓展與開發可以節省很多時間&#xff0c;提高開發效率&#xff0c;比如技能編輯器&#xff0c;關卡編輯器這種。當然這只是編輯器開發的一些典型應用&#xff0c;它能做不止這些。學習完這個之后&#xff0c;我們可以開發項目需要的工具。我本意在編輯…

使用 mongoimport 導入本地 JSON 文件到 MongoDB 及數據查看指南

在項目中&#xff0c;我們經常需要將本地 JSON 文件批量導入 MongoDB 數據庫。本文以 Ubuntu 22.04 環境為例&#xff0c;詳細記錄了如何安裝 mongoimport 工具、正確導入多個 JSON 文件&#xff0c;以及查看導入后的數據。一、環境介紹操作系統&#xff1a;Ubuntu 22.04.5 LTS…

新手向:Python數據處理Excel報表自動化生成與分析

Python實現Excel報表自動化系統全流程指南本文將詳細介紹如何使用Python實現一個完整的Excel報表自動化系統&#xff0c;涵蓋從數據清洗、分析到可視化報表生成的全流程。本教程面向Python初學者&#xff0c;通過實際案例講解pandas和openpyxl庫的核心用法。系統概述Excel報表自…

【第六節】docker可視化工具portainer安裝

該文章參考了這篇文章https://zhuanlan.zhihu.com/p/27740131259portainer是一個基于網頁的docker可視化管理工具&#xff0c;試想一下我們怎么登錄路由器管理界面的&#xff0c;異曲同工。那么就需要在服務器的docker內安裝portainer&#xff0c;然后在我們的開發機或者說工作…

使用 Certbot 申請和自動續簽 Let’s Encrypt 的免費 SSL 證書

一. Let’s Encrypt 介紹 Let’s Encrypt 是當前最常用的免費 HTTPS 證書生成工具之一。該服務由非營利組織提供&#xff0c;致力于為全球范圍內的網站提供便捷的自動化證書頒發服務。雖然 Let’s Encrypt 證書的有效期只有90天&#xff0c;但是可以自動續期&#xff0c;這使得…

【kubernetes】--controller(DaemonSet)

Kubernetes DaemonSet 控制器詳解 它確保集群中所有(或部分)節點上都運行一個 Pod 的副本。當有新節點加入集群時&#xff0c;DaemonSet 會自動在新節點上創建 Pod&#xff1b;當節點從集群中移除時&#xff0c;這些 Pod 也會被垃圾回收。 DaemonSet 的核心特性 每個節點一個 P…

內測分發平臺應用的異地容災和負載均衡處理和實現思路

內測分發平臺應用的異地容災和負載均衡處理和實現思路如下&#xff1a;一、異地容災1.風險評估和需求分析&#xff1a;對現有的IT基礎設施進行全面的風險評估和需求分析&#xff0c;評估潛在風險和災害的可能性&#xff0c;以及確定業務和數據的關鍵性。2.設計備份架構&#xf…

【Vue】瀏覽器緩存 sessionStorage、localStorage、Cookie

嘿&#xff0c;各位 Vue 開發者們&#xff01;今天咱們來好好聊聊瀏覽器里的三種緩存方式&#xff1a;sessionStorage、localStorage 和 Cookie。在實際開發中&#xff0c;合理運用這些緩存能讓我們的應用性能大幅提升&#xff0c;同時避免一些不必要的問題。下面就跟著我的筆記…

c#如何將不同類型的數據存儲到一起

在 C# 中&#xff0c;存儲不同類型的數據有多種方式&#xff0c;具體選擇取決于你的需求&#xff08;類型安全、性能、靈活性等&#xff09;。以下是常見的解決方案及其適用場景&#xff1a;1. 使用 object 類型&#xff08;裝箱 / 拆箱&#xff09;將所有數據轉換為基類 objec…

超唯美治愈風卡通插畫PPT模版

海洋卡通風治愈系PPT模版&#xff0c;兒童可愛治愈可愛PPT模版&#xff0c;治愈風商務通用PPT模版&#xff0c;治愈系課件PPT模版&#xff0c;治愈風插畫PPT模版&#xff0c;超唯美治愈風PPT模版&#xff0c;可愛插畫治愈系女孩PPT模版 超唯美治愈風卡通插畫PPT模版&#xff1a…

el-tooltip 快速滾動的時候出現殘影如何解決 vue3

<el-tooltip:disabled"isScrolling" <!-- 新增滾動狀態綁定 -->:popper-options"{ modifiers: [{ name: computeStyles, options: { adaptive: false }] }"effect"dark":content"label.name"placement"right-start"…