C++繼承與多型(一)
Student(const char*name,int num)
:Person(name)//呼叫父類建構函式
,_num(num)
{}
2.拷貝建構函式
//s2(s1)
Student(const Student& s)
:Person(s)
,_num(s._num)
{}
3.值操作符過載
//s2=s1Student& operator=(const Student& s)
{
if(this!=&s)
{
Person::operator=(s);
_num=s._num;
}
return *this;
}
4.解構函式 不需要顯式調父類,父類的解構函式是子類解構函式完成後自動呼叫的。 三、單繼承和多繼承 1.單繼承:一個子類只有一個直接父類 2.多繼承:一個子類有兩個或兩個以上直接父類 菱形繼承: 菱形繼承會存在二義性和資料冗餘的問題
//解決二義性,沒有解決資料冗餘
Assistant a;
a.Student::_name="wo"
a.Teacher::_name="ni"
虛繼承:解決菱形繼承的二義性和資料冗餘的問題
相關推薦
C++繼承與多型(一)
一、繼承相關概念 1.繼承:繼承是面向物件複用的重要手段。通過繼承定義一個類,繼承是型別之間的關係建模,共享共有的東西,實現各自本質不同的東西。 2.成員訪問限定符與繼承的關係
【c++知識歸納】繼承與多型(一)
c++是基於面向物件的程式語言,面向物件的三大特性為:封裝、繼承和多型。本文對繼承與多型的知識點進行了總結歸納,這部分內容對於學習c++程式語言是非常重要的,文章加入我的個人理解,希望
從零開始學C++之虛擬函式與多型(一):虛擬函式表指標、虛解構函式、object slicing與虛擬函式、C++物件模型圖
#include <iostream>using namespace std;class CObject {public: virtual void Serialize() { cout << "CObject::Serialize ..." <&
c/c++ 繼承與多型 文字查詢的小例子(智慧指標版本)
為了更好的理解繼承和多型,做一個文字查詢的小例子。 介面類:Query有2個方法。 eval:查詢,返回查詢結果類QueryResult rep:得到要查詢的文字 客戶端程式的使用方法: //查詢包含Daddy的文字所在的行 Query q("Daddy"); //查詢不包含Alice的
c/c++ 繼承與多型 文字查詢的小例子(非智慧指標版本)
問題:在上一篇繼承與多型 文字查詢的小例子(智慧指標版本)在Query類裡使用的是智慧指標,只把智慧指標換成普通的指標,並不新增拷貝構造方法,會發生什麼呢? 執行時,程式碼崩掉。 分析下面一行程式碼: Query qb = ~Query("Alice"); 1,首先呼叫Query(string)的建構
C語言面向物件程式設計:虛擬函式與多型(3)
在《 C++ 程式設計思想》一書中對虛擬函式的實現機制有詳細的描述,一般的編譯器通過虛擬函式表,在編譯時插入一段隱藏的程式碼,儲存型別資訊和虛擬函式地址,而在呼叫時,這段隱藏的程式碼可以找到和實際物件一致的虛擬函式實現。 我們在這裡提供
《Java從入門到失業》第五章:繼承與多型(5.1-5.7):繼承
5.繼承與多型 5.1為什麼要繼承 最近我兒子迷上了一款吃雞遊戲《香腸派對》,無奈給他買了許多玩具槍,我數了下,有一把狙擊槍AWM,一把步槍AK47,一把重機槍加特林(Gatling)。假如我們把這些玩具槍抽象成類,類圖的示意圖大致如下
《Java從入門到失業》第五章:繼承與多型(5.8-5.10):多型與Object類
5.8多型 上面我們瞭解了向上轉型,即一個物件變數可以引用本類及子類的物件例項,這種現象稱為多型(polymorphism)。多型究竟有什麼用呢?我們先學習一個知識點。 5.8.1方法重寫  
Java 多型 (一)
多型時為了提高程式碼複用率和可讀性存在的, 簡單點說,就是同一個方法可以呼叫同一個父類的不同子類的功能,這樣就避免了到每一個子類中去寫這種相同的方法,具體實現見如下程式碼片段: Person.java package shunli.li.duotai; public class Per
Java程式設計師從笨鳥到菜鳥之(三)面向物件之封裝,繼承,多型(下)
五:再談繼承 繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。物件的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和例項變數,並且類可以修改或增加
c/c++ 繼承與多型 引用有的時候並不能達到多型的效果
繼承與多型 引用有的時候並不能達到多型的效果 問題:c++ primer 第五版說,只有指標和引用呼叫虛擬函式時才會發生動態繫結(多型)。實踐一下,發現引用有的時候不能發生多型繫結(多型)。 下面的例子,父類是Quote,在Quote裡定義了一個虛擬函式debug,用來打印出各自成員的值。2個子類Bulk
c/c++ 繼承與多型 繼承中的public, protected, private
問題:類B私有繼承類A,類A有個protected成員,那麼在類B的成員函式裡是否可以使用類A的protected成員? 可以使用。 估計有的同學說不對吧,類B都私有繼承了類A了,怎麼還能訪問類A的protect成員呢?請看下面的例子。在類Pri_derv的f()成員函式裡是可以方位父類Base的pub_
c/c++ 繼承與多型 靜態呼叫與動態呼叫
靜態呼叫,與動態呼叫。 #include <iostream> class Base{ public: virtual int fcn(){ std::cout << "base fcn()" << std::endl; } }; class D1 :
深入瞭解.NET中繼承和多型(下)
很久都沒寫BLGO了,關於多型的第3篇文章一晃就1年了才寫。有時比較迷茫,感覺太多東西都要學,什麼都想學,卻找不清方向了。呵呵,看著好多牛人的BLOG覺得自己水平實在是太差了。呵呵。有時甚至覺得自己寫的東西太低階了。呵呵,或許是自己抱怨太多了,還是靜下心來慢慢學習吧。以後一
深入理解C#中的泛型(一)
為什麼要有泛型? 請大家思考一個問題:由你來實現一個最簡單的氣泡排序演算法,如果沒有使用泛型的經驗,可能會毫不猶豫的寫出以下程式碼: public class SortHelper { //引數為int陣列的氣泡排序 publi
[學習筆記]C#繼承與多型
語言表達要清晰,結構明確。 繼承:一個類多用,減少程式碼量,且將框架層次化。(和JAVA幾乎一樣,比較簡單) class 基類 { 建構函式(a,b){} property1; methode() {} } class 派生
java之 ------ 類的封裝、繼承和多型(二)
問題:宣告銀行賬戶類,成員變數包括賬號、儲戶姓名、開啟時間、身份證號碼、存款餘額等賬戶資訊,成員方法包括開戶、存款、取款、查詢(餘額、明細)、銷戶等操作。 主要成員描述如下 public class Account { //
C++設計模式-繼承與多型影響耦合性(最基礎的簡單工廠模式小例項)
繼承與多型影響耦合性(最基礎的簡單工廠模式小例項) 原理: 通過繼承和虛擬函式的方式修改某個子類對應函式的功能; 通過簡單工廠模式到底例項化誰; 如果要增加複雜的運算只有增加響應的子類,以及工廠的分支即可; 程式執行截圖如下: 目錄結構如
Java面向物件與多執行緒綜合實驗(一)之封裝、繼承與多型
編寫一個程式,實現檔案管理系統中的使用者管理模組。要求模組中實現使用者的模擬登入過程。通過使用者輸入,獲取使用者名稱和口令;與事先記錄在程式中的使用者資訊進行對比,通過口令驗證後才能使用系統。使用者分為系統管理人員、檔案錄入人員,檔案瀏覽人員三類,相關類圖如下所示。 (1)要求在使用者類中
C++: 繼承和多型(一)三種繼承方式與許可權
繼承 在C++中,我們常要對某個函式進行多次複用,例如: 資訊管理系統中,對於教師、學生、教務人員等"類"而言,有部分資訊是通用的:姓名,性別,年齡,聯絡方式等。如果為每一種角色都編寫一個"類",會有不少重複的程式碼,造成效率上的浪費。 &nbs