描述
1.定義乙個類animal,該類中包含資料成員name用來記錄動物的名字,並有乙個虛函式show用於顯示動物的種類。
2.定義兩個類cat和dog,都繼承自animal;包含show函式,不但要顯示動物的種類(型別分別 為 cat,dog),還要顯示動物的名字。
3.定義乙個tiger類,繼承自cat,包含show函式,顯示動物的種類(型別為tiger)和名字。
編寫主函式,在主函式中定義乙個基類指標,並用這個指標指向派生類的物件,通過基類指標呼叫派生類的show函式,實現執行時的多型
輸入cat類,dog類和tiger類物件的名字
輸出cat類,dog類和tiger類物件的型別和名字
樣例輸入
tom樣例輸出sunny
petter
this is a cat, and my name is tom.this is a dog, and my name is sunny.
this is a tiger, and my name is petter.
#pragma gcc optimize(2)
#include #include #define ios ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
class animal
virtual void show()=0;
void show_name()
void show()
繼承(多型和虛析構函式)
派生類不能直接訪問基類的私有成員,必須通過基類方法進行訪問。建立派生類物件時,首先建立基類物件。也就是說基類物件在程式進入派生類建構函式之前被建立。c 使用成員初始化列表來完成。派生類建構函式初始化基類私有成員,採用成員初始化列表。總結 首先,若基類函式需要被派生類重定義,則需要將其在基類宣告為虛函...
C 析構函式和虛析構函式。
析構函式如果不是虛的話,基類的析構函式將不會被呼叫。多型時,也就是派生類被基類指標所指,或者被基類別名 虛析構函式,被呼叫時,其自身的析構函式和基類的析構函式都將會被呼叫。非虛的時候,不進行多型,只有基類的會被呼叫。純虛析構函式 定義的時候除了加 0 還需要給出函式的實現。因為當遞迴的呼叫析構函式時...
虛析構函式和protected析構函式
型別需要虛析構函式的另外乙個特徵 是該型別具有指標成員或引用成員。如果有指標成員和引用成員,則該型別通常需要實現析構函式以及拷貝操作。通常,乙個實現了析構函式的型別同時也需要實現拷貝建構函式與拷貝複製函式。1.如果乙個類有虛函式功能,它經常作為乙個基類使用。2.如果它是乙個基類,它的派生類經常使用n...