一、繼承中類的類型轉換規則
我們普通的編程規則規定,如果我們想把引用或指針綁定到一個對象上,則引用或指針的類型必須與所綁定的對象的類型一致或者對象的類型含有一種可接受的const類型轉換規則。但是繼承關系中的類比較例外,其規則如下:
①我們可以將基類的指針或引用綁定到派生對象上
#include <iostream>
class A {};
class B:public A{};
int main()
{A *a;B b;a = &b;return 0;
}
②即使不是指針/引用類型,我們也可以將派生類轉換為基類
#include <iostream>
class A {};
class B:public A{};
int main()
{A a;B b;a = b;return 0;
}
②不能將基類對象綁定到派生類的指針/引用上
A a;
B *b;
b = &a; //程序錯誤,不能將基類對象轉換為派生類對象
二、轉換的本質
派生類可以轉換為基類的本質是:
①為什么派生類可以轉換為基類:派生類從基類而來,因此派生類中包含了基類的方法和成員。此時基類可以通過指針或引用指向派生類(相