C++:重定義

派生類和基類的同名成員問題

派生類中再實現一個基類中的方法會怎樣
(1)代碼實驗:派生類和基類中各自實現一個內容不同但函數原型完全相同的方法,會怎么樣
(2)結論:基類對象調用的是基類的方法,派生類對象調用執行的是派生類中重新提供的方法
(3)這種派生類中同名同參方法替代掉基類方法的現象,叫做:重定義(redefining),也有人叫做隱藏。
(4)隱藏特性生效時派生類中實際同時存在2份同名同參(但在不同類域名中)的方法,同時都存在,只是一個隱藏了另一個

#include <iostream>// 基類
class Animal {public:std::string name_;// 帶參數的基類構造函數Animal(const std::string &name) : name_(name) {std::cout << "Animal constructor called for " << name_ << std::endl;}// 基類析構函數virtual ~Animal() {std::cout << "Animal destructor called for " << name_ << std::endl;}void printf_name() { std::cout << "name_:" << name_ << std::endl; }private:};// 派生類
class Pigeon : public Animal {public:// 帶參數的派生類構造函數Pigeon(const std::string &name, int age) : Animal(name), age_(age) {std::cout << "Pigeon constructor called for " << name << " aged " << age_<< std::endl;}// 派生類析構函數~Pigeon() {std::cout << "Pigeon destructor called for age " << age_ << std::endl;}void printf_name() { std::cout << "11 name_:" << this->name_ << std::endl; }private:int age_;
};int test070101() {Animal a("Polly1");a.printf_name();Pigeon p("Polly", 3);p.printf_name();return 0;
}

在這里插入圖片描述

類型兼容規則的常見情況及演示
(1)子類對象可以當作父類對象使用,也就是說子類對象可以無條件隱式類型轉換為一個父類對象
(2)子類對象可以直接初始化或直接賦值給父類對象
(3)父類指針可以直接指向子類對象
(4)父類引用可以直接引用子類對象
在這里插入圖片描述
在這里插入圖片描述

總結

理解什么是隱藏(重定義)
派生類對象直接調用時,隱藏規則生效,直接調用的肯定是派生類中重新實現的那一個
子類是一個擁有父類屬性和方法加上擁有自己的屬性和方法的獨立的類,可以降級變成父類來用

學習記錄,侵權聯系刪除。
來源:朱老師物聯網大課堂

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

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

相關文章

進程調度篇

在操作系統的廣闊領域中&#xff0c;進程調度是其中一個至關重要的環節。它如同操作系統的“交通警察”&#xff0c;負責在多個等待CPU執行的進程間進行高效、公平的分配。本文將帶您了解進程調度的基本概念、重要性、常用算法…… 1. 進程調度的基本概念 1.1 進程調度的定義 …

【FreeRTOS】freeRTOS的Tmr Svc任務優先級配置

1、Tmr Svc是個FreeRTOS的軟件定時器任務&#xff0c;他可以收集各任務的狀態 2、他的優先級可以通過宏 configTIMER_TASK_PRIORITY 來配置&#xff0c;默認是2 3、修改為31后&#xff0c;程序總是啟動不了&#xff0c; 4、后面才發現原來FreeRTOS的默認最大優先級號配置的是…

工具指南 - jenkins

一、接入SonarQube 掃描代碼 SonarQube是一個用于管理代碼質量的開放平臺&#xff0c;可以快速的定位代碼中潛在的或者明顯的錯誤。 1.1 源碼管理 如果源碼托管在SVN&#xff0c;需要進行Subversion配置&#xff1a; Repository URL&#xff1a;源碼地址&#xff0c;比如https:…

一鍵優雅為Ubuntu20.04服務器掛載新磁盤

itopen組織1、提供OpenHarmony優雅實用的小工具2、手把手適配riscv qemu linux的三方庫移植3、未來計劃riscv qemu ohos的三方庫移植 小程序開發4、一切擁抱開源&#xff0c;擁抱國產化 一、小于2T磁盤掛載方式 1.1 安裝磁盤到電腦后啟動系統 1.2 查找未分區的磁盤 打…

ios swift5 藍牙廣播出數據

WARNING: The advertisement key ‘Manufacturer Data’ is not allowed WARNING: The advertisement key ‘Service Data’ is not allowed manager?.startAdvertising([CBAdvertisementDataServiceUUIDsKey : [myService?.uuid], CBAdvertisementDataLocalNameKey : "…

鴻蒙Navigation的頁面跳轉官方代碼

星河版本 文章部分代碼來源于官方 文章部分代碼來源于官方只是自己改了容易理解 與API4不同的Navigation 新版本使用的思路是 1、創建頁面棧 pageInfos: NavPathStack new NavPathStack();2、resources/base/profile創建 router_map.json 文件 {"routerMap":…

數電設計提問求幫助,出租車計費器。

&#x1f3c6;本文收錄于《CSDN問答解惑-》專欄&#xff0c;主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案&#xff0c;希望能夠助你一臂之力&#xff0c;幫你早日登頂實現財富自由&#x1f680;&#xff1b;同時&#xff0c;歡迎大家關注&&收藏&…

Autosar診斷實戰系列28-2E寫DID Pending期間偶發回NRC0x13問題排查

本文框架 前言1.問題描述2.問題復現3.問題分析問題1:為何在2E Pending期間會發送功能尋址的10 01回NRC13?問題2:在ECU Pending期間收到功能尋址10 01,MCU需要如何處理?問題3:DcmDslConnection是如何定義的?問題4:功能尋址于物理尋址是否對應不同的DcmDslConnection?問…

Pandas數據可視化寶典:解鎖圖形繪制與樣式自定義的奧秘

Pandas數據可視化寶典&#xff1a;解鎖圖形繪制與樣式自定義的奧秘 引言 數據可視化是將數據以圖形或圖像的形式展示出來&#xff0c;使復雜的數據更容易被人類理解和分析。在數據分析、商業智能、科學研究等領域&#xff0c;數據可視化都扮演著至關重要的角色。Pandas作為一…

如何通過 Java 來完成 zip 文件與 rar 文件的解壓縮?

目錄 一、用到的知識點 二、代碼展示(分解版) 三、代碼展示(整體版) 一、用到的知識點 1.IO流&#xff1a; Input:輸入&#xff0c;通過“輸入流”進行文件的讀取操作 Output:輸出&#xff0c;通過“輸出流”進行文件的寫入操作 2.文件操作相關&#xff1a; File類&#xff…

Point Cloud Library (PCL) for Python - pclpy 安裝指南 (2)

Point Cloud Library (PCL) for Python - pclpy 安裝指南 (1) 導入庫 from pclpy import pcl import numpy as np導入pclpy庫中的pcl模塊&#xff0c;用于處理點云數據。numpy庫用于處理數值數據。 讀取點云 cloud pcl.PointCloud.PointXYZRGB() pcl.io.loadPCDFile(F:\\bunn…

2024年西安鐵一中集訓DAY1---- 雜題選講

文章目錄 牛客練習賽125 E 聯誼活動&#xff08;枚舉&#xff0c;分討&#xff09;牛客練習賽125 F 玻璃彈珠&#xff08;類莫隊&#xff0c;離線詢問&#xff0c;數據結構&#xff09;2024ccpc長春邀請賽 D Parallel Lines&#xff08;隨機化&#xff09;2024ccpc長春邀請賽 E…

STM32智能健康監測系統教程

目錄 引言環境準備智能健康監測系統基礎代碼實現&#xff1a;實現智能健康監測系統 4.1 數據采集模塊 4.2 數據處理與分析模塊 4.3 通信與網絡系統實現 4.4 用戶界面與數據可視化應用場景&#xff1a;健康監測與優化問題解決方案與優化收尾與總結 1. 引言 智能健康監測系統通…

k8s 容器環境下的鏡像如何轉換為docker 使用

在無法連接registry 的環境中&#xff0c;想要把 crictl 中的鏡像給docker 使用&#xff0c;應該怎么處理&#xff1f; 其實容器鏡像是通用的&#xff0c;crictl 和ctr 以及docker 鏡像是可以互相使用的&#xff0c;因為docker 在1.10版本之后遵從了OCI。所以crictl 環境下的鏡…

Android Studio 的Gradle下載慢,Gradle切換下載源

看圖 下面的文字地址因為轉義符號的問題&#xff0c;https后面少了一個斜杠看圖片進行補充&#xff0c;直接復制不知道能不能用 distributionUrlhttps://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip

浪潮服務器內存物理插槽位置

浪潮服務器內存物理插槽位置 如下圖所示

Doze和AppStandby白名單配置方法和說明

機制 配置路徑 配置案例 說明 影響機制 調試命令 Doze /platform/frameworks/base /data/etc/platform.xml allow-in-power-save 【系統應用Doze白名單配置】 Doze\Job\AppStandby\Alarm\WakeLock\Sync 查看Doze白名單:adb shell dumpsys deviceidle 添加Doze白名單…

漏洞挖掘之信息搜集(一)

本篇文章只從信息搜集的步驟整理 一、選好你要挖掘的src 這一點一定要明確,定好一個,然后下定決心一定要挖到一個高危 常見src總結: 360眾測(需要考核) 漏洞盒子(還可以,審核很慢)----基本無要求 補天:有錢,但要求高,百度收錄占比權重大于等于1或者或者谷歌權…

前端進階全棧計劃:Java基礎語法

前言 本教程旨在幫助初學者系統地掌握Java的基礎知識。我們將從Java的基本語法開始&#xff0c;逐步深入到面向對象編程、異常處理、多線程編程等核心概念。無論你是編程新手&#xff0c;還是希望夯實基礎的開發者&#xff0c;這份指南都將帶你走進Java的世界&#xff0c;打下堅…

昇思MindSpore學習筆記6-06計算機視覺--Vision Transormer圖像分類

摘要&#xff1a; 記錄MindSpore AI框架使用ViT模型在ImageNet圖像數據分類上進行訓練、驗證、推理的過程和方法。包括環境準備、下載數據集、數據集加載、模型解析與構建、模型訓練與推理等。 一、概念 1. ViT模型 Vision Transformer 自注意結構模型 Self-Attention Tran…