(1)子類物件中既包含父類中繼承來的變數,還包括自身所特有的.當把子類物件去賦值給父類物件時,把兩者共有的部分進行了賦值.(有篇文章反映了兩者的記憶體關係:
(2)反之,父類物件賦值給子類物件時,由於父類物件不能夠提供子類物件所特有的變數,因此會報錯.
(3)物件指標也有這樣的使用規則,子類指標可以直接賦值給父類指標.而將父類指標賦值給子類時,需要使用顯示型別轉換.
感覺編譯器很勢利眼,禮多人不怪(子類轉成父類),少了就報錯(反之).
#include usingnamespace
std;
classa;
class b : public
a
inta;
intb;
void
func()
};int
main()
//在vs2015 x86下執行的.
執行結果:816
a.a:-858993460 a.b:-858993460
b.a:
10 b.b:20816
a.a:
100 a.b:200
b.a:
10 b.b:20
測試子類物件賦值給父類的引用
public class testget public void b public class testget2 extends testget public static void main string args 列印結果是bbb 修改下 public class testget public ...
子類可以直接賦值給父類,但
子類可以賦值給父類,但是只能用父類有的公有方法和屬性。呼叫公有方法時,如果子類重寫了方法則使用子類重寫的方法,如果沒有重寫就使用父類的方法。呼叫公有屬性時,當子類和父類都有相同屬性時,用的是父類屬性。注意,賦值只是賦值給引用具有父類方法和公有屬性的變數而已,記憶體裡還是指向子類的物件,儲存的是子類的...
型別相容 子類的物件可以給父類指標賦值
乙個公有派生類的物件在使用上可以被當做基類的物件,反之禁止。也就是說 1.派生類的物件可以賦值給基類的物件 如b public a a a b b a b 語法上是允許的 2 派生類的物件可以初始化基類的引用 void f a a int main 3 指向基類的指標可以指向派生類 a p p ne...