4期c++9月19號

上午知識點

1.派生類成員的標識與訪問同名覆蓋原則

當派生類與基類中有相同成員時:1若未強行指名,則通過派生類對象使用的是派生類中的同名成員。2如要通過派生類對象訪問基類中被覆蓋的同名成員,應使用基類名限定。

派生類與基類中有共同成員,基類中的同名成員會被隱藏或者說是基類中的同名成員被重定義了,也可以說派生類中的同名成員把基類中的給遮蓋了,調用同名成員見一下例子:

class student{,,,,public:? ........? void o(){cout<<tel<<endl;}? ? protected:? int tel;};

class master:public student{ ..public:. void(){cout<<①tel<<endl;②student::o();③cout<<student::tel<<endl;protected:? int tel;};

void main(){一、master a(13312345,13012345); 二、 a.o();三、a.Student::o();

①調用的是派生類中的tel,②和③調用的是基類中的tel

一和二是派生類的函數 ,三是基類的函數

2,多重繼承形式:class 派生類名:繼承方式1? 基類名1,繼承方式2? 基類名2,...{成員聲明;}

①cass C: public B2, public B1, public B3{public:C(int i, int j, int k,int l):B1(i,j),B2(k,l){d=i+l}

構造函數的調用順序取決于繼承的順序,和初始化的順序無關。如上先調用B2,在調用B1,最后B3.

3.二義性

①在多重繼承時,基類與派生類之間,或基類之間出現同名成員時,將出現訪問時的二義性(不確定性)——采用虛函數或同名覆蓋原則來解決。cout<<B1::b<<B2::b<<endl;

②當派生類從多個基類派生,而這些基類又從同一個基類派生,則在訪問此共同基類中的成員時,將產生二義性——采用虛基類來解決。

虛基類的引入用于有共同基類的場合。聲明class B1:virtual public B

作用主要用來解決多繼承時可能發生的對同一基類繼承多次而產生的二義性問題.為最遠的派生類提供唯一的基類成員,而不重復產生多次拷貝

注意:在第一級繼承時就要將共同基類設計為虛基類。

有虛基類的構造函數先調用虛基類再按繼承順序繼續。如下:先B0在B1? B2

class B0{};? classB1::virtual public B0{};? classB2::virtual public B0{}; classD:: public B1,public B2{public:D(int b0,int b1, int b2, int b3):B0(b0),B1(b1),B2(b2){nvd=b3;}}

下午進行圖形類的練習,根據老師上課講的例題進行編寫,本題包括了這幾天的所有知識點,未完成晚上會繼續編寫。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 今天上午主要講了三個知識點 1.派生類成員的標識與訪問同名覆蓋原則 當派生類與基類中有相同成員時:1若未強行指名,...
    34d71ddb735c閱讀 198評論 0 0
  • 1. 結構體和共同體的區別。 定義: 結構體struct:把不同類型的數據組合成一個整體,自定義類型。共同體uni...
    breakfy閱讀 2,143評論 0 22
  • C++文件 例:從文件income. in中讀入收入直到文件結束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 2,850評論 0 3
  • @synthesize和@dynamic分別有什么作用?@property有兩個對應的詞,一個是 @synthes...
    筆筆請求閱讀 532評論 0 1
  • 不得不說時間是一個很奇妙的載體,承載著生命,承載著故事,承載著歲月里的你和我。歲月里,我們一路流浪一路傻呼呼的前行...
    蘇家小六閱讀 436評論 7 15