1.類(lèi)型兼容性原則
在上一節(jié)的C++中的繼承中介紹了什么是類(lèi)型兼容性原則。所謂的類(lèi)型兼容性原則是指子類(lèi)公有繼承自父類(lèi)時(shí),包含了父類(lèi)的所有屬性和方法,因此父類(lèi)所能完成的功能,使用子類(lèi)也可以替代完成,子類(lèi)是一種特殊的父類(lèi)。所以可以使用子類(lèi)對(duì)象初始化父類(lèi)對(duì)象,可以用父類(lèi)指針指向子類(lèi)對(duì)象,可以用父類(lèi)引用來(lái)引用子類(lèi)對(duì)象。
2.函數(shù)的重寫(xiě)
函數(shù)的發(fā)生在類(lèi)的繼承過(guò)程中,所謂的函數(shù)的重寫(xiě)是指在繼承中,子類(lèi)定義了與父類(lèi)函數(shù)原型相同的函數(shù),即定義了和父類(lèi)中一樣的函數(shù)。
3.類(lèi)型兼容性原則遇上函數(shù)的重寫(xiě)
# include<iostream>using namespace std;/* 定義父類(lèi) */class Parent {public: /* 定義print函數(shù) */ void print() { cout << "Parent print()函數(shù)" << endl; } };/* 定義子類(lèi)繼承自父類(lèi),并重寫(xiě)父類(lèi)的print函數(shù) */class Child :public Parent {public: /* 重寫(xiě)父類(lèi)的print函數(shù) */ void print() { cout << "Child print()函數(shù)" << endl; } };int main() { Child c; /* 調(diào)用子類(lèi)對(duì)象的print函數(shù),打印子類(lèi)的print函數(shù) */ c.print(); /* 通過(guò)使用作用域操作符調(diào)用父類(lèi)的print函數(shù),打印父類(lèi)的print函數(shù) */ c.Parent::print(); /* 當(dāng)我們使用類(lèi)型兼容性原則的時(shí)候,發(fā)現(xiàn)調(diào)用的函數(shù)是父類(lèi)的print函數(shù),這是符合編譯器規(guī)則的 */ Parent p1 = c; p1.print(); Parent *