C 子類物件直接賦值給父類物件可行,反過來不行

2022-03-25 15:27:52 字數 610 閱讀 1316

(1)子類物件中既包含父類中繼承來的變數,還包括自身所特有的.當把子類物件去賦值給父類物件時,把兩者共有的部分進行了賦值.(有篇文章反映了兩者的記憶體關係:

(2)反之,父類物件賦值給子類物件時,由於父類物件不能夠提供子類物件所特有的變數,因此會報錯.

(3)物件指標也有這樣的使用規則,子類指標可以直接賦值給父類指標.而將父類指標賦值給子類時,需要使用顯示型別轉換.

感覺編譯器很勢利眼,禮多人不怪(子類轉成父類),少了就報錯(反之).

#include using

namespace

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...