前置++和后置++
我們知道對于運算子多載,我們也是可以多載前置++和后置++的,那么對于這兩個運算子的話,它們操作的元素是一樣的,那么如何區分它們呢?
C++規定函式形參帶int的是后置++,并且,在程式里面,一般前置++的效率更高,對于像C++這樣追求效率的語言而言,應該盡量選用前置++,因為前置++直接將當前物件++,然后回傳當前物件即可,而后置++,要先復制一下當前物件,然后對物件進行++操作,這樣進行的拷貝建構式就多消耗了一部分資源,
繼承與派生
1.類的繼承是用已有的類來建立專用新類的編程技術,一個基類可以派生出多個派生類,每一個派生類又可以作為基類再派生出新的派生類,
2.C++支持單繼承和多繼承,這兩種繼承在生活中都有一些實體,例如,對于單繼承,

圖形可以派生出圓形,三角形,矩形,對于多繼承(一個派生類可以有兩個或多個基類),例如下圖,

3.對于protected修飾符,這種限定符的資料,類外不可以訪問,但是該類的派生類可以訪問,這種修飾符在派生繼承這里很實用!!或許這是它存在的意義,
4.在寫派生類的建構式的時候,派生類的資料成員的初始化只能在初始化表中初始化,
5.基類的成員函式不能訪問派生類的成員,
6.
一般在工程中,我們更多的是使用公有繼承,這種繼承情況下,基類的公有屬性和保護屬性保持自己的訪問權限在派生類中不改變,基類私有的,保持自己是私有的,不可被派生類訪問,并且,我們一般把基類的資料成員設定成保護的,便于子類訪問,
7.多重繼承會產生二義性問題,一種情況是多個基類中有一些命名相同的資料成員,那解決的辦法是在使用的時候在識別符號前面加基類名作為前綴,(使用域運算子)②、派生類中的成員和基類的成員名稱相同的話,此時會發生覆寫,就是說基類的成員在這里默認是“不可見的”,如果要使用的話,要和前面一樣,使用域運算子,注意這里的覆寫是要求很高的,要求完全一樣,如果對于成員函式,只是函式名一樣,引數不一樣的話,那是屬于函式的多載,③、二義性還會出現在這樣的情況中:

這里C繼承了A和B,但是A和B是繼承自同一個基類N的,這樣就會產生一個問題,基類N中的成員在A類和B類中會分別存盤于不同的位置,這樣一來,C繼承了之后,就存盤了兩份一樣的,浪費了空間,訪問還麻煩,還需要加域名限定符來看看到底是哪一個類的,為了解決這個問題,C++提供了虛基類技術,
虛基類
它的目的是繼承間接共同基類的時候只保留一份成員,例如上面的情況,如果使用虛基類技術的話,C中只會出現一份N類中的成員,定義如下:(A被稱為虛基類,)

虛繼承的語法如下:

虛基類有一個重要的問題就是需要注意資料成員的初始化,例如,圖中的D不僅需要對直接繼承的類B和C的成員初始化,還需要對虛基類A的成員初始化,一般的繼承,只需要對直接繼承的類成員初始化即可,

基類與派生類的轉換
1.派生類物件可向基類物件賦值,賦值時要舍棄派生類自己的成員,賦值只是對資料成員的賦值,不包括成員函式,
2.派生類物件可以替代基類物件,例如這里的:r是對基類的參考,但是是用b1這個B類的物件初始化的,

3.指向基類物件的指標變數也可以指向派生類物件,但是此時這個指標即使指向的是派生類物件,但是它可以訪問的成員還是從基類繼承過來的成員,而不能訪問派生類中增加的成員,要想通過基類指標能夠訪問子類物件的成員,要使用虛函式和多型性技術,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/259525.html
標籤:區塊鏈
上一篇:【知識索引】【C++入門】
下一篇:Clion配置C語言環境
