C++之 多繼承

在學校里有老師和學生,他們都是人,我么應該創建一個名為 Person 的基類和兩個名為 Teacher 和Student 的子類,后兩者是從前者繼承來的

有一部分學生還教課掙錢(助教),也就是同時存在著兩個”是一個”關系,我們需要寫一個 TeschingStudent 類讓它同時繼承 Teacher 類和 Student 類,換句話說,就是需要使用多繼承。

// 基本語法:
class TeachingStudent : public Student, public Teacher
{ … }
#include<iostream>
#include<string>
class Person //基類 
{public:Person(std::string theName);void introduce();protected:std::string name;	
};
class Teacher:public Person //老師類 
{public:Teacher(std::string theName,std::string theClass);void teach();void introduce();protected:std::string classes;			
};
class Student:public Person //學生類 
{public:Student(std::string theName,std::string theClass);void attendClass();void introduce();protected:std::string classes;			
};	
class TeachingStudent:public Student,public Teacher //學生助教類 
{ public:TeachingStudent(std::string theName,std::string classTeaching,std::string classAttending);void introduce(); 
};Person::Person(std::string theName)
{name=theName;
}
void Person::introduce()
{std::cout<<"Hello,I`m"<<name<<"。\n\n"; 
}Teacher::Teacher(std::string theName,std::string theClass):Person(theName)
{classes=theClass;
}
void Teacher::teach()
{std::cout<<name<<"教"<<classes<<"。\n\n"; 	
}
void Teacher::introduce()
{std::cout<<"大家好,我是"<<name<<",我教"<<classes<<"。\n\n"; 
}Student::Student(std::string theName,std::string theClass):Person(theName)
{classes=theClass;
}
void Student::attendClass()
{std::cout<<name<<"加入"<<classes<<"學習。\n\n";
}
void Student::introduce()
{std::cout<<"大家好,我是"<<name<<",我在"<<classes<<"學習\n\n"; 
}TeachingStudent::TeachingStudent(std::string theName,std::string classTeaching,std::string classAttending): Teacher(theName,classTeaching),Student(theName,classAttending)
{}
void TeachingStudent::introduce()
{std::cout<<"大家好,我是"<<Student::name<<",我教"<<Teacher::classes<<",";std::cout<<"同時我在"<<Student::classes<<"學習。\n\n";
}int main()
{Teacher  teacher("小紅","入門班");Student student("蘭蘭","C++入門班");TeachingStudent teachingStudent("茗茗","C++入門班級","C++進階班");teacher.introduce();teacher.teach();student.introduce();student.attendClass();teachingStudent.introduce();teachingStudent.teach();teachingStudent.attendClass();return 0;
}

?

注意:

  • 在使用多繼承的時候,一定要特別注意繼承了基類的多少個副本。
  • 在使用多繼承的時候,最安全最簡明的做法是從沒有任何屬性且只有抽象方法的類開始繼承。
  • 按照上邊這么做可以讓你遠離后代子類可能擁有好幾個基類屬性的問題。
  • 這樣的類又叫做接口( interface )。

未完待續。。。?

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

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

相關文章

大數據學習棧記——Redis安裝及其使用

本文介紹NoSQL技術&#xff1a;Redis的安裝及其使用。操作系統&#xff1a;Ubuntu24.04 Redis介紹 Redis是一個鍵值&#xff08;key-value&#xff09;存儲系統&#xff0c;即鍵值對非關系型數據庫&#xff0c;和Memcached類似&#xff0c;目前正在被越來越多的互聯網公司采用…

2024團體程序設計天梯賽L3-1 奪寶大賽

L3-037 奪寶大賽 分數 30 作者 陳越 單位 浙江大學 奪寶大賽的地圖是一個由 nm 個方格子組成的長方形&#xff0c;主辦方在地圖上標明了所有障礙、以及大本營寶藏的位置。參賽的隊伍一開始被隨機投放在地圖的各個方格里&#xff0c;同時開始向大本營進發。所有參賽隊從一個方格…

JMeter的高并發和高頻率和分布式

性能測試 模擬各種正常的、峰值的測試環境&#xff0c;檢測程序的各項性能指標是否能夠達標 高并發 JMeter中內置了定時器&#xff0c;可以實現時間模式相關的性能測試 需求1:同一時刻100個同學去訪問學生管理系統的查詢所有學院信息功能&#xff0c;統計高并發情況下平均響…

ubuntu學習day2

linux常用命令 3.文件查看及處理命令 3.1查看文件內容 cat[選項][文件] -b 對非空輸出行編號 -E 在每行結束處顯示$ -n 對輸出的所有行編號 -s 不輸出多行空行 標準輸入、標準輸出和標準錯誤 在 Linux 中&#xff0c;每個進程默認有三個文件描述符&#xff1a; 標準輸入&…

項目中引入 Redis 及 常用五種數據類型

在平常的開發過程中&#xff0c;我們經常會用到緩存的技術。比如&#xff0c;驗證碼60秒后過期、計數器的實現、商品信息存儲在緩存中快速展示等。那么&#xff0c;項目中經常會使用到的便是 redis 緩存。redis 在內存中操作&#xff0c;讀寫快。Redis 常用的數據類型有五種&am…

Spark-SQL簡介及核心編程

Spark-SQL概述&#xff1a;是Spark用于結構化數據處理的模塊&#xff0c;前身是Shark。Shark基于Hive開發&#xff0c;使SQL-on-Hadoop性能大幅提升&#xff0c;但對Hive依賴制約了Spark發展。SparkSQL汲取Shark優點并重新開發&#xff0c;在數據兼容、性能優化和組件擴展上優勢…

奇趣點播系統測試報告

1.項目簡介 本項目旨在搭建一個視頻共享點播系統&#xff0c;服務器支持用戶通過前端瀏覽器訪問服務器&#xff0c;獲取展示與觀看和操作的界面&#xff0c;最終實現視頻的上傳以及觀看和刪改查等基礎管理功能。讓用戶擁有良好的觀看體驗和分享視頻的快捷方式&#xff0c;此外…

【Web API系列】WebSocketStream API 深度實踐:構建高吞吐量實時應用的流式通信方案

前言 在當今的 Web 開發領域&#xff0c;實時通信已成為許多應用的核心需求。無論是即時聊天、實時數據儀表盤&#xff0c;還是在線游戲和金融交易系統&#xff0c;都需要高效的雙向數據傳輸能力。傳統的 WebSocket API 為此提供了基礎支持&#xff0c;但在處理大規模數據流、…

基于LangGraph的智能報告生成平臺項目分析

前言 不知道你是否知道或者了解OpenAI and Gemini Deep Research。他們是一種能夠根據輸入問題進行規劃、結合網絡搜索獲取信息并最終呈現結果的研究工具或技術。那這樣research是如何實現的呢?最近剛好看到一個實現類似功能的開源項目: open_deep_search。本文將基于該項目進…

Redis 常見的集群架構

Redis 常見的集群架構 以下是 Redis 常見的集群架構及其核心模式詳解&#xff0c;結合其設計原理、適用場景和優缺點進行綜合說明&#xff1a; 一、主從復制模式 架構原理 角色劃分&#xff1a;包含一個主節點&#xff08;Master&#xff09;和多個從節點&#xff08;Slave&…

面試寶典(C++基礎)-01

文章目錄 1. C++基礎1.1 C++特點1.2 說說C語言和C++的區別1.3 說說 C++中 struct 和 class 的區別1.4 include頭文件的順序以及雙引號""和尖括號<>的區別1.5 說說C++結構體和C結構體的區別1.6 導入C函數的關鍵字是什么,C++編譯時和C有什么不同?1.7 C++從代碼…

快速獲得ecovadis認證的方法,如何提升ecovadis認證分數,有效期是多久

快速獲得EcoVadis認證的方法 EcoVadis認證是企業社會責任&#xff08;CSR&#xff09;和可持續發展能力的國際評估標準&#xff0c;被廣泛應用于供應鏈管理&#xff08;如蘋果、微軟、聯合利華等巨頭要求供應商通過EcoVadis評估&#xff09;。以下是快速獲得認證的關鍵步驟&am…

ubuntu 安裝samba

ubuntu 版本&#xff1a;Ubuntu 24.04.2 LTS 1. 保證連網 2. 安裝samba sudo apt install samba 在安裝結束以后&#xff0c;我們可以使用下面的命令來查看安裝&#xff1a; apt list | grep samba freeipa-client-samba/noble 4.11.1-2 amd64 ldb-tools/noble 2:2.8.0samba…

基于SpringBoot的寵物健康咨詢系統(源碼+數據庫+萬字文檔)

502基于SpringBoot的寵物健康咨詢系統&#xff0c;系統包含三種角色&#xff1a;管理員、用戶&#xff0c;顧問主要功能如下。 【用戶功能】 1. 首頁&#xff1a;查看系統主要信息和最新動態。 2. 公告&#xff1a;瀏覽系統發布的公告信息。 3. 顧問&#xff1a;瀏覽可提供咨詢…

人工智能驅動的科研新范式及學科應用研究

人工智能&#xff08;AI&#xff09;驅動的科研新范式通過數據、算力、算法的深度耦合深度嵌入科學研究的全過程&#xff0c;引發科研流程、思考邏輯和組織模式的深刻變革。文章系統總結了AI驅動科研新范式的主要特征與形式&#xff0c;提出AI驅動科研新范式的演化方向由“科研…

代碼生成工具explain的高級用法

修改 explain.cpp 中的模板部分&#xff1a; // 添加自定義頭文件 cout << "#include \"CustomLib.h\"\n"; 生成支持日志的記錄代碼&#xff1a; cout << "Logger::init();\n"; // 自動插入初始化代碼其他匯總 Magnet 多線程控制…

Vue3+elementPlus中 樹形控件封裝

1.組件 <template><div class"selection"><el-select placeholder"請選擇" v-model"nameList" clearable clear"handleClear" ref"selectUpResId" style"width: 100%"><el-option hidden :…

輝視監獄廣播對講系統:SIP協議賦能智慧監管新生態

一、全域互聯&#xff1a;構建監獄安防設備協同生態 基于SIP協議的輝視廣播對講系統&#xff0c;以"通信中樞"角色打破設備壁壘。其強大的兼容性可無縫對接監獄現有監控、門禁、報警等異構設備&#xff0c;支持GB/T 28181國標協議&#xff0c;實現跨品牌、跨系統的數…

信息系統項目管理師-工具名詞解釋(上)

本文章記錄學習過程中,重要的知識點,是否為重點的依據,來源于官方教材和歷年考題,持續更新共勉 本文章記錄學習過程中,重要的知識點,是否為重點的依據,來源于官方教材和歷年考題,持續更新共勉 數據收集 頭腦風暴 在短時間內獲得大量創意,適用于團隊環境,需要引導者…

C++之二叉搜索樹

目錄 ?叉搜索樹的概念 二叉搜索數的性能分析 二叉搜索樹的模擬實現 定義二叉樹節點結構 二叉搜索樹的插入 二叉搜索樹的查找 二叉搜索樹的刪除 中序遍歷 全部代碼 二叉搜索樹key和key/value使用場景 key搜索場景&#xff1a; key/value搜索場景&#xff1a; key/value…