1. 程式人生 > >為什麼基類的指標可以指向派生類物件,但是派生類指標不能指向基類物件

為什麼基類的指標可以指向派生類物件,但是派生類指標不能指向基類物件

Derive *bp1;
Derive dpp;
bp1 = &dpp;
bp1->show();

Base bpp;
bp1 = &bpp;   //錯誤

假設有個people類是基類,成員有姓名和身份證號,有個派生類學生student,添加了成員學號,現在如果你說的這個情況成立student的指標----pt讓他指向people成員t,則t只有兩個成員變數,而*pt有3個,現在pt->學號這個變數在pt下是可以使用的,但它指向的實體卻沒有這個變數,所以出錯,於是C++直接就避免了這樣的隱式轉換