[C++ 從入門到精通] 13.派生類、調用順序、繼承方式、函數遮蔽

  • 📢博客主頁:https://loewen.blog.csdn.net
  • 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
  • 📢本文由 丶布布原創,首發于 CSDN,轉載注明出處🙉
  • 📢現在的付出,都會是一種沉淀,只為讓你成為更好的人?

文章預覽:

      • 一. 派生類概念
      • 二. 派生類對象定義時,調用構造函數的順序
      • 三. 繼承方式
      • 四. 函數遮蔽


一. 派生類概念

派生類:在C++中,繼承就是在一個已存在的類的基礎上建立一個新的類。已存在的類稱為「基類」,又稱為「父類」;新建立的類稱為「派生類」,又稱為「子類」。

繼承:「派生類」從已有的「基類」那里獲得其相關特性(一些公用的成員變量和成員函數),這種現象稱為類的繼承。「繼承」是面向對象程序設計的核心思想之一。好處:可以減少代碼量,這樣在寫派生類的時候,只寫與派生類相關的成員變量和成員函數即可,公用的相關功能可以直接從基類中繼承使用。

繼承的書寫格式class 子類名 : 繼承方式(public/protected/private) 父類名

舉例

class Human  //父類
{
public:Human();Human(int &a);	~Human();void print(){std::cout << "執行了Human的成員函數print()" << std::endl;}public: int  m_age;        //年齡char m_name[100];  //名字
};
#include "Human.h"class Man : public Human //繼承:表示Man是Human的子類
{
public:Man();~Man();private:int m_num;
};
#include "Human.h"
#include "man.h"int main()
{Man man;        //定義一個子類的對象   man.print();    //通過<對象.>的方式可以調用父類的函數print()man.m_num;      //通過<對象.>的方式可以調用自己的變量system("pause");return 0;
}

二. 派生類對象定義時,調用構造函數的順序

繼續上面的來:

Human::Human()
{std::cout << "執行了Human::Human()默認構造函數" << std::endl;
}
Man::Man()
{std::cout << "執行了Man::Man()默認構造函數" << std::endl;
}
int main()
{Man man;        / //當定義子類對象時,父類的構造函數也會調用的  system("pause");return 0;
}

在這里插入圖片描述

可以看出,當定義子類Man對象時,不僅僅調用了子類Man的構造函數,也調用了父類Human的構造函數,而且是先調用。


三. 繼承方式

🐕 三種訪問權限:

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

🐪 三種繼承方式:public繼承 、 protect繼承和private繼承

基類中的訪問權限子類繼承基類的方式子類得到的訪問權限
public& public繼承public
protected & public繼承protected
private& public繼承子類無權訪問
public& protected繼承protected
protected& protected繼承protected
private& protected繼承子類無權訪問
public& private繼承private
protected & private繼承private
private& private繼承子類無權訪問

🐩 總結:

  1. public繼承基類:不改變基類成員的訪問權限
  2. protected繼承基類:將基類中public成員變為子類的protected成員,其它成員的訪問權限不變;
  3. private繼承基類:使得基類所有成員在子類中的訪問權限變為private
  4. 基類中的private成員不受繼承方式的影響,子類永遠無權訪問;
  5. 對于基類來講,尤其是基類的成員函數,如果不想讓外面訪問,就設置為private;如果想讓子類能夠訪問,就設置為protected;如果想公開,就設置為public

四. 函數遮蔽

子類中如果有和父類一樣的同名函數,那么子類對象則無法訪問調用父類中的同名函數。

解決措施如下:

1、在子類的成員函數中,通過父類::同名函數來強制調用父類函數;

在這里插入圖片描述

2、通過關鍵字using 讓父類的同名函數在子類中可見;

在這里插入圖片描述

ps:通過關鍵字using方法只適合子類和父類中的函數同名不同參數情況,可通過該方式調用父類同名函數;若子類和父類中的函數同名同參數情況,則還需使用方法一;


下雨天,最愜意的事莫過于躺在床上靜靜聽雨,雨中入眠,連夢里也長出青苔。

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

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

相關文章

SOEM主站開發篇(2):添加SOEM主站APP程序

0 工具準備 1.SOEM-1.4.0源碼(官網:http://openethercatsociety.github.io/) 2.Linux開發板(本文為正點原子I.MX6U ALPHA開發板) 3.交叉編譯工具(arm-linux-gnueabihf-gcc) 4.cmake(版本不得低于3.9,本文為3.9.2) 5.Ubuntu 16.04(用于編譯生成Linux開發板的可執行文…

【Unity細節】Default clip could not be found in attached animations list.(動畫機報錯)

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;元宇宙-秩沅 hallo 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! 本文由 秩沅 原創 &#x1f636;?&#x1f32b;?收錄于專欄&#xff1a;unity細節和bug &#x1f636;?&#x1f32b;?優質專欄 ?【…

生產制造業如何謀求數字化轉型?需要哪些信息化系統做支撐?

生產制造業的數字化轉型是將數字系統和各種技術整合到傳統制造流程中的過程&#xff0c;這將導致行業格局的重大變革。工業4.0的到來為制造業開創了一個新時代&#xff0c;制造商可以簡化生產線&#xff0c;提高整體效率。同時&#xff0c;這一技術革命使他們能夠收集到大量的數…

計算機網絡實用工具之tcpdump

簡介 tcpdump是一個運行在命令行下的數據包分析器。能夠獲取到該計算機發送或接收的TCP/IP和其他數據包。 tcpdump 適用于大多數的類Unix操作系統&#xff0c;包括Linux、Solaris、BSD、Mac OS X、HP-UX和AIX 等等。在這些系統中&#xff0c;tcpdump 需要使用libpcap這個捕捉…

Altium Designer學習筆記9

忽視了一個最大的問題&#xff0c;就是元器件的封裝&#xff0c;不應該是根據AD系統的封裝走&#xff0c;而應該是根據立創商城上的規格書&#xff0c;確認每個封裝的大小&#xff0c;畫出封裝圖&#xff0c;然后才是布局和走線。 1、確認電容的封裝采用0805&#xff0c;貼片電…

【css】Google第三方登錄按鈕樣式修改

文章目錄 場景前置準備修改樣式官方屬性修改樣式CSS修改樣式按鈕的高度height和border-radiusLogo和文字布局 場景 需要用到谷歌的第三方登錄&#xff0c;登錄按鈕有自己的樣式。根據官方文檔&#xff1a;概覽 | Authentication | Google for Developers&#xff0c;提供兩種第…

局域網協議:地址解析協議(ARP,Address Resolution Protocol)

地址解析協議&#xff08;ARP&#xff0c;Address Resolution Protocol&#xff09;是一種用于在IP網絡中將IP地址映射到物理MAC地址的協議。在IP網絡中&#xff0c;IP是用于尋址&#xff0c;真正將數據包從一個設備發送到另外一個設備&#xff0c;用于通信的是物理MAC地址。 …

40、Flink 的Apache Kafka connector(kafka sink的介紹及使用示例)-2

Flink 系列文章 1、Flink 部署、概念介紹、source、transformation、sink使用示例、四大基石介紹和示例等系列綜合文章鏈接 13、Flink 的table api與sql的基本概念、通用api介紹及入門示例 14、Flink 的table api與sql之數據類型: 內置數據類型以及它們的屬性 15、Flink 的ta…

geemap學習筆記012:如何搜索Earth Engine Python腳本

前言 本節主要是介紹如何查詢Earth Engine中已經集成好的Python腳本案例。 1 導入庫 !pip install geemap #安裝geemap庫 import ee import geemap2 搜索Earth Engine Python腳本 很簡單&#xff0c;只需要一行代碼。 geemap.ee_search()使用方法 后記 大家如果有問題需…

vue截取URL中的參數

url&#xff1a; http://localhost:81/login?redirect%2Findex&access_tokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvdUV4dGVybmFsSWQiOiI0OTI2MjYzMTIxMDU1NDAxMTM4IiwiYXVkIjpbImVudGVycHJpc2VfbW9iaWxlX3Jlc291cmNlIiwiYmZmX2FwaV9yZXN 截取參數&#xff1a; let…

如何提高圖片轉excel的效果?(軟件選擇篇)

在日常的工作中&#xff0c;我們常常會遇到一些財務報表類的圖片需要轉換成可編輯的excel&#xff0c;但是&#xff0c;受各種條件的限制&#xff0c;常常只能通過手工錄入這種原始的方式來實現&#xff0c;隨著人工智能、深度學習以及網絡技術的發展&#xff0c;這種原始的錄入…

SpringBoot集成七牛云OSS詳細介紹

&#x1f4d1;前言 本文主要SpringBoot集成七牛云OSS詳細介紹的文章&#xff0c;如果有什么需要改進的地方還請大佬指出?? &#x1f3ac;作者簡介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ??博客首頁&#xff1a;CSDN主頁放風講故事 &#x1f304;每日一句&a…

【Java工具篇】Java反編譯工具Bytecode Viewer

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

【C++高階(四)】紅黑樹深度剖析--手撕紅黑樹!

&#x1f493;博主CSDN主頁:杭電碼農-NEO&#x1f493; ? ?專欄分類:C從入門到精通? ? &#x1f69a;代碼倉庫:NEO的學習日記&#x1f69a; ? &#x1f339;關注我&#x1faf5;帶你學習C ? &#x1f51d;&#x1f51d; 紅黑樹 1. 前言2. 紅黑樹的概念以及性質3. 紅黑…

計算機網絡之數據鏈路層

一、概述 1.1概述 物理層發出去的信號需要通過數據鏈路層才知道是否到達目的地&#xff1b;才知道比特流的分界線 鏈路(Link)&#xff1a;從一個結點到相鄰結點的一段物理線路&#xff0c;中間沒有任何其他交換結點數據鏈路(Data Link)&#xff1a;把實現通信協議的硬件和軟件…

電商API接口|電商數據接入|拼多多平臺根據商品ID查商品詳情SKU和商品價格參數

隨著科技的不斷進步&#xff0c;API開發領域也逐漸呈現出蓬勃發展的勢頭。今天我將向大家介紹API接口&#xff0c;電商API接口具備獨特的特點&#xff0c;使得數據獲取變得更加高效便捷。 快速獲取API數據——優化數據訪問速度 傳統的數據獲取方式可能需要經過多個中介環節&…

華大基因認知障礙基因檢測服務,助力認知障礙疾病防控

認知障礙是一種嚴重的神經系統疾病&#xff0c;對人類的腦健康產生了重大影響。據報告顯示&#xff0c;在我國65歲以上的人群中&#xff0c;存在輕度認知障礙的患者約為3,800萬&#xff0c;而中重度癡呆患者則約為1,500萬&#xff0c;患病人口數量龐大。這種疾病不僅會對患者的…

免費多域名SSL證書

顧名思義&#xff0c;免費多域名SSL證書就是一種能夠為多個域名或子域提供HTTPS安全保護的證書。這意味著&#xff0c;如果您有三個域名——例如example.com、example.cn和company.com&#xff0c;您可以使用一個免費的多域名SSL證書為所有這些域名提供安全保障&#xff0c;而無…

TransFusionNet:JetsonTX2下肝腫瘤和血管分割的語義和空間特征融合框架

TransFusionNet: Semantic and Spatial Features Fusion Framework for Liver Tumor and Vessel Segmentation Under JetsonTX2 TransFusionNet&#xff1a;JetsonTX2下肝腫瘤和血管分割的語義和空間特征融合框架背景貢獻實驗方法Transformer-Based Semantic Feature Extractio…

pyhton接口猜用戶登錄和密碼

import requests import base64 NUM 0 # 讀取 URL 文件內容并生成 URL 列表 with open("urlall.txt", r) as file:urls [url.strip() for url in file.readlines() if url.strip()]# 讀取密碼文件內容并生成密碼列表 with open("password.txt", r) as fil…