vc++深入详解学习-NO.3
c++的多態性,基于虛函數的多態性技術,在成員函數的定義前面加上virtual關鍵字申明的函數叫做虛函數,當c++編譯器在編譯的時候,發現類中的虛函數,這個時候c++就好采用遲邦定技術,在運行期間依據對象的類型確定調用哪一個函數。?
?
在基類的函數前加上virtual關鍵字,在派生類中重寫該函數,運行時候將會根據對象的實際類型來調用相應函數!如果對象類型是派生類,就調用派生類函數,基類則調用基類函數!
純虛函數? virtual 返回類型 函數名()=0? 采用這種方式聲明的函數即是純虛函數,含有純虛函數的類叫做抽象類,這種類不能用來實例化對象,只是作為基類為派生類服務。在派生類中必須完全實現基類的純虛函數,否則派生類也編程了抽象類不能實例化對象!? 純虛函數可以讓類先具有一個操作名稱,而沒有操作內容,讓派生類在繼承時再去具體的實現定義。
=========================
?
函數的覆蓋的條件:
???????? 1 基類函數必須是虛函數
???????? 2 發生覆蓋的兩個函數必須分別位于基類和派生類
?????? ? 3? 函數名稱和參數列表必須完全相同
在函數覆蓋的情況下,編譯器會子運行的時候根據對象的實際類型來確定調用的函數!
=======================
函數的隱藏
派生類中具有和基類同名的函數,從而在派生類中隱藏了基類同名的函數。
1派生類的函數與基類的函數完全相同(函數名和列表都相同),只是基類的函數沒有使用virtual關鍵字,此時基類的函數將被隱藏而不是覆蓋。
2派生類的函數與基類的函數同名,但是參數列表不同,在這種情況下,不管基類的函數聲明是否含有virtual關鍵字,基類的函數都將被隱藏,注意這種情況與函數重載的區別,重載發生在同一個類中。
?
區分覆蓋和隱藏。。函數的覆蓋是發生在派生類與基類之間,兩個函數必須完全相同,并且都是虛函數,不屬于這種情況的,就是隱藏!
===============================
引用。 引用就是變量的別名,他需要另一個變量或者對象來初始化自身! 用&標示申明一個引用,引用必須在申明時候進行初始化。
引用和用來初始化引用的變量指向同一塊內存,因此通過引用或者變量可以改變同一塊內存中的內容。引用一旦初始化,他就代表了一塊特定的內存,再也不能代表其他的內存!
引用只是一個別名,是一個變量或者對象的替換名稱。引用的地址沒有任何意義,因此c++沒有提供訪問引用本身地址的方法、引用的地址就是他所引用的變量或者對象的地址對引用的地址所做的操作就是對被引用的對象或者變量所做操作。指針是地址,指針變量要存儲地址值,因此要占據內存空間,我們可以隨時修該指針變量所保存的地址值,從而指向其他內存。
=============================
c++中為了防止頭文件的多次包含,我們采用預編譯指令符來解決。 用#ifndef 檢查有無定義宏,如果沒有,則定義一個宏#define,然后執行頭文件中的內容,最后在結尾處寫上#endif!
===========
visual c++是一個集編輯器,編譯器,鏈接器的工具集合,編譯過程分兩個部分
1是cpp文件的單獨編譯生成obj目標文件2vc連接生成的obj文件,然后生成exe可執行文件。
?
?
轉載于:https://www.cnblogs.com/veonm/p/3204383.html
總結
以上是生活随笔為你收集整理的vc++深入详解学习-NO.3的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转: Linux下单网卡多vlan多虚拟
- 下一篇: (转)Some awareness be