C++基础与面向对象
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1. 預(yù)處理知識(shí)
預(yù)處理作用如下:
① 包含另一個(gè)文件(通常是頭文件),為了引入需要的代碼。“”是引用非標(biāo)準(zhǔn)庫文件,編譯器將在用戶工作目錄尋找,找不到再去默認(rèn)庫尋找,用于用戶自己定義的頭文件;<>表系統(tǒng)示庫文件。
② 定義符號(hào),起到開關(guān)作用,可以根據(jù)機(jī)器的情況、操作系統(tǒng)的情況及用戶的需求來
決定哪部分代碼有效,例如,如果要在 Win32 的環(huán)境下編程,那么,就定義 Win32 這個(gè)符
號(hào)。
③ 定義宏,簡化常用的數(shù)據(jù),或者簡化復(fù)雜的函數(shù)聲明、定義的過程。
C++是強(qiáng)類型語言,任何變量、函數(shù)都必須先聲明再定義,聲明通常放在單獨(dú)的頭文件中。
在頭文件中聲明類時(shí),注意}后面應(yīng)有分號(hào)!
私有的數(shù)據(jù)成員和函數(shù)并不是只有該類的成員函數(shù)才能訪問到,友元函數(shù)和友
類也能訪問。
2. 類的繼承機(jī)制
C++ 中允許單繼承和多繼承。一個(gè)類可以根據(jù)需要生成派生類。派生類根據(jù)情況繼承了
基類的方法,還可以定義新的方法。一個(gè)子類的每個(gè)對象包含有從父類那里繼承來的數(shù)據(jù)成
員以及自己所特有的數(shù)據(jù)成員。
在 C++ 語言中,派生類可以從一個(gè)基類派生,稱為單繼承;
也可以從多個(gè)基類派生,就是所謂多繼承。
派生類的繼承方式有 “ 公有繼承( public ) ” 、 “ 私有繼承( private ) ” 和 “ 保護(hù)繼
承( protected ) ” 這 3 種常見的方式,此外還有虛繼承這種方式。
這里重點(diǎn)介紹一下公有繼承。
公有繼承的特點(diǎn)是基類的公有成員和保護(hù)成員作為派生類的成員時(shí),它們都保持原有
的狀態(tài),而基類的私有成員仍然是私有的。
⑴ 基類成員對其對象的可見性:公有成員可見,其他不可見。這里保護(hù)成員同于私有
成員;
⑵ 基類成員對派生類的可見性:公有成員和保護(hù)成員可見,而私有成員不可見。這里
保護(hù)成員同于公有成員;
⑶ 基類成員對派生類對象的可見性:公有成員可見,其他成員不可見。
所以,在公有繼承時(shí),派生類的對象可以訪問基類中的公有成員;派生類的成員函數(shù)
可以訪問基類中的公有成員和保護(hù)成員。
3.虛函數(shù)
虛函數(shù)就是人們希望在派生類中被重新定義的函數(shù),注意:用基類的指針指向派生類的對象時(shí),就能調(diào)用該派生類的虛函數(shù)。
需要注意以下幾點(diǎn) :
1. 在基類中聲明一個(gè)成員函數(shù)為虛函數(shù)后,在它的派生類中此成員函數(shù)也是虛函數(shù),
并且不需要在前面加關(guān)鍵字。
2. 當(dāng)指針調(diào)用函數(shù)時(shí),如果調(diào)用的是虛函數(shù),則根據(jù)指針指向的對象訪問函數(shù);如果
調(diào)用的是非虛函數(shù),則指針的類型調(diào)用相應(yīng)的函數(shù);如果虛函數(shù)在派生類中沒有定義,則會(huì)
自動(dòng)調(diào)用基類中的函數(shù)定義。
另外, 虛函數(shù)的使用需要謹(jǐn)慎,因?yàn)樗鼤?huì)增加一些額外的開銷,不過這點(diǎn)開銷不足以
削弱它的強(qiáng)大功能,除非用戶漫無目的濫用它。
此外,可以將一個(gè)虛函數(shù)聲明為一個(gè)純虛函數(shù):
virtual void show()=0;
這么做,等于告訴編譯器在對象中為函數(shù) show 保留一個(gè)間隔,為將來從基類中派生的
函數(shù)占據(jù)一個(gè)位置。純虛函數(shù)有 以下 特點(diǎn):
1. 純虛函數(shù)僅僅是用來為基類的派生類中的函數(shù)保留位置
2. 純虛函數(shù)在基類中沒有定義,它們被初始化為 0
3. 當(dāng)虛函數(shù)變成純虛函數(shù)時(shí),任何派生類都必須給出它自己的定義。否則編譯出錯(cuò)。
在使用中,不能創(chuàng)建一個(gè)帶有純虛函數(shù)的類的對象,但允許聲明含有純虛函數(shù)的類的指針。
在程序中往往會(huì)用到這個(gè)功能。
4. 句柄
Windows 具有很強(qiáng)的面向?qū)ο筇匦浴?Windows 對象有很多,譬如桌面、讀取所使用的程序等等。那么,如何區(qū)分這些東西呢?答案是使用句柄。句柄是引用不同 Windows 對象的方式。可以使用 Windows 的句柄、文件的句柄、分配內(nèi)存的句柄、圖像的句柄等等。系統(tǒng)在創(chuàng)建這些資源時(shí)會(huì)為它們分配內(nèi)存,并返回標(biāo)識(shí)這些資源的標(biāo)識(shí)號(hào),這就是句柄。
實(shí)際上我們也可以將這些句柄看作指針。
轉(zhuǎn)載于:https://my.oschina.net/assange/blog/414347
總結(jié)
以上是生活随笔為你收集整理的C++基础与面向对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ShowAllPic--图片
- 下一篇: CentOS升级gcc到4.8.2以支持