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