c++多型就是動態繫結
動態繫結就是在執行時才能知道我要執行什麼操作
靜態繫結
void fun(){
cout<<"hello world"動態繫結
動態繫結需要借助派生類 和 基類 和虛函式 實現
class base{
public:
virtual void fun(){cout<<"hello base"public:
void fun(){cout<<"hello son"son s;
base* p=&b; //此處有多型 多型就是就是基類的指標可以指向派生類(基類型別可以引用派生類如base& b_=b;) 即&s 所以p->fun()這一句 我們在不知道p指向的究竟是具體哪個類時 是無法得知應該執行派生類的fun()還是基類的fun()
p->fun();//此處執行基類的fun()
p=&s;
p->fun();//此處執行派生類的fun()
多型需要借助虛函式 虛函式也是可以被實現的 不能被實現的是純虛函式 純虛函式的類叫抽象類是不能例項化的 只有派生的類實現了這個純虛函式派生類才能例項化 否則派生類也是個抽象類 純虛函式的格式是 void fun()=0;
關於基類的指標 引用 普通量 和 派生類的關係
son s;
base* p=&s; //p->fun()是子類的fun()
base& b=s; 是子類的fun()
base b=s; 是基類的fun() 因為這一步實際是呼叫了base的拷貝建構函式 拷貝建構函式接收s並將其切割轉換成base型別 只保留bse類中的成員 所以返回的是base型別的b
C 極簡總結 多型 一
多型 指相同物件收到不同訊息或者不同物件收到相同訊息時產生不同的動作。總的來說分為 靜態多型 早繫結 例如定義如下的 rect 類,在clcarea 中傳入不同形式引數會呼叫不同的函式。函式呼叫在程式執行前就準備好了。有時候這也被稱為早繫結。ifndef polymorphism rect h de...
多型簡單理解
constdataset cn new constdataset 基類變數指向基類物件 constdataset st new specifictest 基類變數指向子類物件呼叫非虛方法 執行呼叫方法的變數型別對應的方法,如果沒有找到,則往上回溯,查詢基類中有無對應的方法 直到object,若找不到...
多型簡單了解
什麼是多型?概念 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。簡單的說 就是用基類的引用指向子類的物件。為什麼要用多型呢?原因 我們知道,封裝可以隱藏實現細節,使得 模組化 繼承可以擴充套件已存在的 模組 類 它們的目的都是為了 重用。而多型除了 的復用性外,還可以...