本篇文章為本人學(xué)習(xí)C++過(guò)程中記錄的學(xué)習(xí)筆記,看的是嗶站黑馬程序員的視頻,本人覺(jué)得講的非常棒,感興趣的可以看看,以下內(nèi)容歡迎大家閱讀和批評(píng)指正。
1、指針系列:
(1)① 常量指針 :const int *P; (const修飾指針)
特點(diǎn):指針的指向可以更改,但是指向的值不可以更改。
② 指針常量 :int * const P; (const修飾常量)
特點(diǎn):指針的指向不可以更改,但是指向的值可以更改。
③ const既修飾指針,又修飾常量的: const int * const p;
特點(diǎn):指向的值都不能發(fā)生改變。
(2) this指針 :本質(zhì)是指針常量。
2、 靜態(tài)成員 :
(1)靜態(tài)成員變量 :所有對(duì)象共享這一樣的數(shù)據(jù)、類(lèi)內(nèi)聲明,類(lèi)外初始化;
(2)靜態(tài)成員函數(shù) :所有對(duì)象共享一個(gè)函數(shù)、靜態(tài)成員函數(shù)只能訪問(wèn)靜態(tài)成員變量。
3、多態(tài):
看如下代碼:
#include
using namespace std;
class Father
{
public:
void func()
{
cout << "調(diào)用父類(lèi)成員func()函數(shù)成功!" << endl;
}
};
class Son:public Father
{
public:
void func()
{
cout << "調(diào)用子類(lèi)成員func()函數(shù)成功!" << endl;
}
};
void test(Father& f)
{
f.func();
}
int main()
{
Son s1;
test(s1);
}
這個(gè)程序的執(zhí)行結(jié)果是:調(diào)用父類(lèi)成員func()函數(shù)成功!
為了能夠輸出“調(diào)用子類(lèi)成員func()函數(shù)成功! ”,解決辦法就是用虛函數(shù),在父類(lèi)Father的func函數(shù)前加個(gè)virtual。
得注意以下幾點(diǎn):①如果是這樣test(Father* f),指針和引用是一樣的; ②發(fā)生這種動(dòng)態(tài)多態(tài),必須得有繼承關(guān)系; ③子類(lèi)重寫(xiě)父類(lèi)的虛函數(shù),子類(lèi)加不加virtual都可以( 一般不加,好區(qū)分 )。
(1) 純虛函數(shù)與抽象類(lèi) :
class Father
{
Public: virtual void func() = 0;
};
上述代碼中,函數(shù)func直接=0,表示純虛函數(shù),含有純虛函數(shù)的類(lèi)教抽象類(lèi)。 其派生類(lèi)必須對(duì)函數(shù)func進(jìn)行重寫(xiě)實(shí)例化,不然也是抽象類(lèi)。 也就是說(shuō),F(xiàn)ather s; 編譯會(huì)報(bào)錯(cuò)。
和虛函數(shù)差不多,一般寫(xiě)成純虛函數(shù)的都是為了不讓其代碼實(shí)現(xiàn),而是讓子類(lèi)實(shí)現(xiàn)。
(4) 虛析構(gòu)和純虛析構(gòu) :(解決的同一個(gè)問(wèn)題,方法不同)
多態(tài)在使用的時(shí)候,如果子類(lèi)中有屬性開(kāi)辟到了堆區(qū),那么父類(lèi)指針在釋放空間時(shí)無(wú)法調(diào)用到子類(lèi)的析構(gòu)代碼,應(yīng)該如何解決?
注:父類(lèi)的指針在析構(gòu)的時(shí)候,不會(huì)調(diào)用子類(lèi)的析構(gòu)函數(shù)。 導(dǎo)致,如果有子類(lèi)堆區(qū)屬性,會(huì)出現(xiàn)內(nèi)存泄漏,也就是delete不了。
解決方法:在父類(lèi)的析構(gòu)函數(shù)前加上virtual關(guān)鍵字即可。
如果采用的是純虛析構(gòu)的話(huà),virtual ~Father()=0;但是,還得在類(lèi)外初始化一下才行。 Father::~Father(){}
注:有了純虛析構(gòu)的類(lèi)也是抽象類(lèi),無(wú)法實(shí)例化對(duì)象。
(5) 多態(tài)性:同一個(gè)操作可以是不同對(duì)象的行為 ;
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4377瀏覽量
64556 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71106 -
C++
+關(guān)注
關(guān)注
22文章
2118瀏覽量
74976 -
代碼
+關(guān)注
關(guān)注
30文章
4894瀏覽量
70452 -
編譯
+關(guān)注
關(guān)注
0文章
676瀏覽量
33874
發(fā)布評(píng)論請(qǐng)先 登錄
學(xué)習(xí)C++
C++筆記003:C++從一個(gè)小程序開(kāi)始
學(xué)習(xí)c++的經(jīng)驗(yàn)分享!
如何學(xué)習(xí)C++,如何學(xué)好C++
學(xué)習(xí)C++的方法以及C++的就業(yè)方向
在main文件中怎樣去使用C++呢
C和C++的學(xué)習(xí)過(guò)程總結(jié)
Linux C/C++ 學(xué)習(xí)路線(xiàn)

C語(yǔ)言和STM32學(xué)習(xí)的一些學(xué)習(xí)筆記
C++學(xué)習(xí)筆記之c++的基本認(rèn)識(shí)
C++學(xué)習(xí)筆記之順序容器
C/C++語(yǔ)言學(xué)習(xí)大全套

評(píng)論