CPP_封裝_繼承_多態

類的三方法:封裝,繼承,多態。
封裝:使用一整套方法去創建一個新的類型,這叫類的封裝。
繼承:從一個現有的類型基礎上,稍作改動,得到一個新的類型的方法,叫類的繼承。
多態:當有幾個不同的子類對象時,對象調用的函數會依據對象類型來調用相應類型的成員函數。

繼承

1. 繼承的主要目的是為了代碼復用。
創建子類對象時,先創建父類,再創建子類。
析構時,先析構子類,再析構父類。

2. 訪問權限:public, protected, private.
protected表示這種成員可以被子類繼承和訪問,但是外界卻像private一樣不可訪問。
父類的private成員并不是不繼承,而是對子類擴展的成員函數不可見。

public派生規則:
父類成員訪問權限 子類繼承自父類成員的訪問限定
public public
protected protected
private 不可見

protected派生規則:
父類成員訪問權限 子類繼承自父類成員的訪問限定
public protected
protected protected
private 不可見

private派生規則:
父類成員訪問權限 子類繼承自父類成員的訪問限定
public private
protected private
private 不可見

3.?類型轉換

父類A子類B
A *p = new B; 可以
B *p = new A; 不可以
p調用的成員方法為父類(A)的方法,非子類B的成員方法。屬編譯時綁定(因p的指針類型為A *),如要訪問子類,需要使用多態(父類相應方法定義為virtual)。

A a;
B *p;
p = &a; 可以
p訪問成員變量時可能越界(因p的成員變量多余a)

多態

聲明為vitual的成員函數稱為虛函數。
有虛函數的類都有一個隱含的指針成員vptr,指向一個虛函數表。(一個類一個)
每個父類或子類都各自有一張虛函數表。在構造對象時,對象的vptr成員指向該類的虛函數表。
包含虛函數的類的sizeof應多加4個字節,用于存放vptr(虛函數表指針)。

一旦某個函數在父類中聲明為virtual,在所有繼承它的子類中這個函數也是virtual的,子類可以不必寫virtual關鍵字。

聲明為virtual的函數,在運行時確定執行體,屬動態綁定,dynamic binding。調用子類的具體實現。如果一個成員函數聲明為virtual并在末尾加上=0而沒有提供函數的實現,稱為虛函數,擁有虛函數的類稱為抽象類,抽象類不能實例化(或者說不能創建該類的對象),而只能被其他類繼承。

抽象類也稱為接口,繼承了某個抽象類也稱實現了某個接口。

?

轉載于:https://www.cnblogs.com/embedded-linux/p/9613557.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388563.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388563.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388563.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

win與linux淵源,微軟與Linux從對立走向合作,WSL是如何誕生的

原標題:微軟與Linux從對立走向合作,WSL是如何誕生的正文Windows Subsystem for Linux(WSL)的開發,讓微軟從Linux的對立面走向合作,并且不斷加大對開源社區的支持力度。而作為微軟歷史上的重要轉折點,外界對WSL技術在Pr…

文件編輯器 vi

1、關于文本編輯器; 文本編輯器有很多,比如圖形模式的gedit、kwrite、OpenOffice ... ... ,文本模式下的編輯器有vi、vim(vi的增強版本)和nano ... ... vi和vim是我們在Linux中最常用的編輯器。我們有必要介紹一下vi&a…

MFC80.DLL復制到程序目錄中,也有的說復制到安裝目錄中

在用VS2005學習C調試程序的時候,按F5鍵,總提示這個問題, 不曉得什么原因,網上有的說找到MFC80.DLL復制到程序目錄中,也有的說復制到安裝目錄中,可結果很失望,也有的VS2005安裝有問題&#xff0…

vs顯示堆棧數據分析_什么是“數據分析堆棧”?

vs顯示堆棧數據分析A poor craftsman blames his tools. But if all you have is a hammer, everything looks like a nail.一個可憐的工匠責怪他的工具。 但是,如果您只有一把錘子,那么一切看起來都像釘子。 It’s common for web developers or databa…

服務器

服務器主流品牌:華為、浪潮、戴爾、惠普華為服務器:華為FusionServer RH2288 V3 華為FusionServer RH5885 V3 浪潮服務器: 浪潮英信NP3020M4 浪潮英信NF5280M4 戴爾服務器: 戴爾PowerEdge R730 機架式服務器 戴爾PowerEdge R740 機…

樹莓派 zero linux,樹莓派 zero基本調試

回家之前就從網上購買了一堆設備,回去也不能閑著,可以利用家里相對齊全的準備安裝調試。結果人還沒回來,東西先到了。購買的核心裝備是樹莓派zero w,雖然已經知道它比家族大哥樹莓派小不少,但拿到手里還是驚奇它的小巧…

error C2440 “static_cast” 無法從“void (__thiscall CPppView )(void)”轉換為“LRESULT (__thiscall

error C2440 “static_cast” 無法從“void (__thiscall CPppView )(void)”轉換為“LRESULT (__thiscall CWnd )(WPARAM,LPARAM)” 不能轉換void (_thiscall CMainFrame::*)(void)to LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)開發平臺由VC6.0升級至VS2005,需要…

簡單的編譯流程

簡易編譯器流程圖: 一個典型的編譯器,可以包含為一個前端,一個后端。前端接收源程序產生一個中間表示,后端接收中間表示繼續生成一個目標程序。所以,前端處理的是跟源語言有關的屬性,后端處理跟目標機器有關的屬性。 復…

廣告投手_測量投手隱藏自己的音高的程度

廣告投手As the baseball community has recently seen with the Astros 2017 cheating scandal, knowing what pitch is being thrown gives batters a game-breaking advantage. However, unless you have an intricate system of cameras and trash cans set up, knowing wh…

linux事務隔離級別,事務的隔離級別(Transaction isolation levels)2

READ COMMITTEDREAD COMMITTED這是數據庫默認的隔離級別。它能保證你不能讀取那張表格數據,只要有其它事務還在改變這張表格數據。可是,因為sql server在select操作的時,鎖表格時間就那么一小會兒,如果一個事務在READ COMMITTED級…

Asp導出到Excel之二

response.contentType "application/vnd.ms-excel" response.addheader "Content-Disposition", "attachment; filename引出文件.xls" 一、適用于動態和表態表。 二、頁面最好只存放數據表,不要有其它內容。 三、對于分頁的情…

warning C4996: “strcpy”被聲明為否決的解決辦法

VC2005中,使用了很多標準的C函數,比如fopen,strcpy之類的。編譯時會出現警告,比如這個: d:\xxxx.c(1893) : warning C4996: “strcpy”被聲明為否決的 緊接著IDE有提示說:“This function or variable…

驗證部分表單是否重復

1. 效果 圖片中的名稱、機構編碼需要進行重復驗證2. 思路及實現 表單驗證在獲取數據將需要驗證的表單數據進行保存this.nameChangeTemp response.data.orgName;this.codeChangeTemp response.data.orgCode; 通過rule對表單進行驗證 以名字的驗證為例rules: {orgName: [// 設置…

python bokeh_提升視覺效果:使用Python和Bokeh制作交互式地圖

python bokehLet’s face it, fellow data scientists: our clients LOVE dashboards. Why wouldn’t they? Visualizing our data helps us tell a story. Visualization turns thousands of rows of data into a compelling and beautiful narrative. In fact, dashboard vi…

用C#寫 四舍五入函數(原理版)

doubled 0.06576523;inti (int)(d/0.01);//0.01決定了精度 doubledd (double)i/100;//還原 if(d-dd>0.005)dd0.01;//四舍五入 MessageBox.Show((dd*100).ToString()"%");//7%,dd*100就變成百分的前面那一部分了

C++設計UDP協議通訊示例

UDP是一種面向非連接,不可靠的通訊協議,相對于TCP來說,雖然可靠性不及,但傳輸效率較高   一、緒言   UDP是一種面向非連接,不可靠的通訊協議,相對于TCP來說,雖然可靠性不及,但…

浪里個浪 FZU - 2261

TonyY是一個喜歡到處浪的男人,他的夢想是帶著蘭蘭姐姐浪遍天朝的各個角落,不過在此之前,他需要做好規劃。 現在他的手上有一份天朝地圖,上面有n個城市,m條交通路徑,每條交通路徑都是單行道。他已經預先規劃…

C#設計模式(9)——裝飾者模式(Decorator Pattern)

一、引言 在軟件開發中,我們經常想要對一類對象添加不同的功能,例如要給手機添加貼膜,手機掛件,手機外殼等,如果此時利用繼承來實現的話,就需要定義無數的類,如StickerPhone(貼膜是手…

北大青鳥c語言課后答案,北大青鳥C語言教程--第一章 C語言基礎.ppt

《北大青鳥C語言教程--第一章 C語言基礎.ppt》由會員分享,可在線閱讀,更多相關《北大青鳥C語言教程--第一章 C語言基礎.ppt(20頁珍藏版)》請在人人文庫網上搜索。1、第一章,C 語言基礎,2,課程地位,.Net ,以 # 開始的語句稱為預處理器指令,#include語句不…

nosql_探索NoSQL系列

nosql數據科學 (Data Science) Knowledge on NoSQL databases seems to be an increasing requirement in data science applications, yet, the taxonomy is so diverse and problem-centered that it can be a challenge to grasp them. This post attempts to shed light on…