繼承語法格式如下:
class 子類名稱 : 繼承方式(public private protected 三種) 父類名稱
純虛函數格式: virtual 返回值類型 函數名(參數列表)= 0;
含有純虛函數的類稱為抽象類,
抽象類不能進行實例,抽象類指針對象可以指向子類
int main()
{
/*
Animal *A;
Dog dog;
Cat cat;
A = &dog;
A->run();
A = &cat;
A->run();
system("pause");
*/
Animal *dog = new Dog();
Animal *cat = new Cat();
dog->run();
cat->run();
delete dog;
delete cat;
dog = NULL;
cat = NULL;
system("pause");
return 0;
}
MFC(Microsoft Fundation Class):微軟基礎類庫
CSting:CString是MFC或者ATL中的實現,是MFC里面封裝的一個關於字符串處理的功能很強大的類,只有支持MFC的工程才可以使用。如在linux上的工程就不能用CString了,只能用標准C++中的string類了。在MFC中使用不需要自己加,但在另外的程序中需要加入#include<CString>。
string:string類既是一個標准c++的類庫,同時也是STL(Standard Template Library,標准模版庫)中的類庫,已經納入C++標准之中。它和CString有本質的區別。
string.h:C語言里面關於字符數組的函數定義的頭文件,常用函數有strlen、strcmp、strcpy等等,這個頭文件跟C++的string類半點關系也沒有,所以 <string>並非 <string.h>的“升級版本”,他們是毫無關系的兩個頭文件。
綜上,cout函數重載的是string類庫中的string類型,而不是CString或string.h中的。
而在MFC中或你包含的是CString頭文件,如果想用cout輸出string 類型,則需要先把string類型轉換char*型
繼承的可訪問性
1.公有繼承(public)
當類的繼承方式為pulic時候,基類的公有成員和保護成員的訪問屬性在派生類中保持不變,而基類的私有成員不可訪問;
2、私有繼承(privated)//父類里面的都變為私有成員或方法了
當類的繼承方式為privated時候,基類的公有成員和保護成員都以私有成員的身份出現在派生類中,而基類的私有成員在派生類中不可訪問。
2、保護繼承(protected)//父類里面的都變為保護成員了
當類的繼承方式為protected時候,基類的公有成員和保護成員都以保護成員身份出現在派生類中,而基類的私有成員在派生類中不可訪問。
繼承關系中構造函數訪問順序
先調用父類中的構造函數,再調用子類中的構造函數。釋放對象時候,先調用當前類的析構函數,再調用父類的析構函數。
//方法重載。在同一個類中,函數名相同而參數個數和參數類型不同
//方法覆蓋。在繼承的兩個類里面子類可以覆蓋/重寫父類里面的同名方法
