C++中繼承與抽象類


繼承語法格式如下:

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時候,基類的公有成員和保護成員都以保護成員身份出現在派生類中,而基類的私有成員在派生類中不可訪問。

 

繼承關系中構造函數訪問順序

先調用父類中的構造函數,再調用子類中的構造函數。釋放對象時候,先調用當前類的析構函數,再調用父類的析構函數。

 

//方法重載。在同一個類中,函數名相同而參數個數和參數類型不同

//方法覆蓋。在繼承的兩個類里面子類可以覆蓋/重寫父類里面的同名方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM