二、多型
二、模板函式(泛型)
繼承可以更好的實現**的重用性
#include #include using namespace std;
//開發者
class developer
};//android開發者
class androiddeveloper : public developer
cout << "我使用" << this->ide << "開發了一款android應用,使用了" << this->language << "語言" << endl;
}private:
//android 版本
char* androidversion;
};//所有開發者都有開發工作
void work(developer& d)
void main()
父類的建構函式先呼叫;子類的析構函式先呼叫
//開發者
class developer
~developer()
void say()
};//android開發者
class androiddeveloper : public developer
~androiddeveloper()
cout << "我使用" << this->ide << "開發了一款android應用,使用了" << this->language << "語言" << endl;
}private:
//android 版本
char* androidversion;
};void work(developer& d)
//父類的建構函式先呼叫
//子類的析構函式先呼叫
void func()
void main()
輸出:
developer 建構函式
androiddeveloper 建構函式
我是開發者
我使用android studio開發了一款android應用,使用了kotlin語言
androiddeveloper 析構函式
developer 析構函式
基類中
繼承方式
子類中public
& public繼承
=> public
public
& protected繼承
=> protected
public
& private繼承
=> private
protected
& public繼承
=> protected
protected
& protected繼承
=> protected
protected
& private繼承
=> private
private
& public繼承
=> 子類無權訪問
private
& protected繼承
=> 子類無權訪問
private
& private繼承
=> 子類無權訪問
4.1 繼承的二義性定義
在某個類b同時繼承另乙個類a的兩個或多個子類時(a1和a2),通過類b訪問類a的成員時,會出現成員不明確的情況,即繼承的二義性
class a ;
class a1 : public a ;
class a2 : public a ;
class b : public a1, public a2 ;
void main()
4.2 繼承的二義性定**決方案
再遇到繼承的二義性時,可使用虛繼承來解決繼承的二義性問題
虛繼承:不同路徑繼承來的同名成員只有乙份拷貝
class a ;
class a1 : virtual public a ;
class a2 : virtual public a ;
class b : public a1, public a2 ;
void main()
virtual 關鍵字修飾的函式叫虛函式,用來實現多型
例如:plane.h
#pragma once
class plane ;
plane.cpp
#include "plane.h"
#include #include using namespace std;
void plane::fly()
void plane::land()
helicopter.h
#pragma once
#include "plane.h"
class helicopter : public plane ;
helicopter.cpp
#include "helicopter.h"
#include #include using namespace std;
void helicopter::fly()
void helicopter::land()
test.cpp
#include #include #include "plane.h"
#include "helicopter.h"
using namespace std;
//業務函式
void runplane(plane &p)
void main()
//形狀
class shape ;
//圓class circle : public shape
void sayarea()
};void main()
介面只是邏輯上的劃分,語法上跟抽象類的寫法沒有區別
//可以看作乙個介面
class drawable
為了繼承約束,子類必須按照約束實現
//可以看作乙個介面
class drawable
函式模板類似於泛型,用於在業務相同,引數型別不同時進行宣告,在使用過程中,根據實際型別進行推導
template //交換兩個變數的值
void swap(t& a, z& b)
void main()
繼承和多型的模板
1 繼承的時候要在父類的後面加上引數列表 2 父類建構函式有引數輸入的話,要在子類的建構函式後面新增初始化列表,同時加上父類名和引數列表 3 建立子類物件時,也要加上引數列表 4 子類可以有模板也可以沒有模板,沒有模板就得指定型別,後面建立物件時須得使用同樣的型別 include include u...
C 的中的繼承,多型和虛函式
首先繼承,多型,虛函式,我們先了解一下各位的關係。繼承是子類繼承父類,完成基礎功能的獲取,當然繼承有三種許可權,public,protect和private,如果不加許可權限定,預設繼承是私有繼承。許可權表如下 所以可以看到凡私有成員,子類都不能用,不過有方法能用,這裡不討論。多型 實際上就是通過繼...
C 中的繼承和多型
只允許單繼承,多繼承可以由介面來實現,繼承是可以傳遞的,類可以定義虛方法 虛屬性 虛索引指示器,而派生類能重寫這些成員,以事項物件導向程式設計中的多型 1.類的繼承 using system using system.collections.generic using system.linq usi...