1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      C++學(xué)習(xí)筆記——C++類層次結(jié)構(gòu)要點(diǎn)-創(chuàng)新互聯(lián)
      目錄
      • 重載解析
      • 多繼承
      • 虛繼承
      • 類的訪問控制public、private、protected
      • 類層次結(jié)構(gòu)中漫游(強(qiáng)制類型轉(zhuǎn)換)
        • 1. dyanmic_cast
        • 2. static_cast
        • 3. const_cast
        • 4. reinterpret_cast
      • 指向成員的指針
      • 擴(kuò)展的類結(jié)構(gòu)信息——typeid
      • 虛析構(gòu)函數(shù)和自由存儲(chǔ)
      • 虛構(gòu)造函數(shù)

      專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)負(fù)責(zé)任的成都網(wǎng)站制作公司!

      參考自《C++程序設(shè)計(jì)語言》、《Microsoft C++語言參考》

      重載解析

      重載解析的使用不會(huì)跨越不同類的作用域。來自不同基類的函數(shù)之間的歧義性不能基于參數(shù)類型完成解析。如果需要在不同的基類中使用同名函數(shù),需要在使用前使用命名空間聲明。(如果參數(shù)相同怎么辦?

      多繼承

      多重繼承提供比單繼承更好的靈活性,但是需要在引用部分成員是添加限定。多重繼承主要要關(guān)注歧義性問題。因?yàn)镃++查找成員的順序是如果不能將名稱解析為顯示引用的類中的成員,編譯器就會(huì)到該類的基類中找,此時(shí)會(huì)有三種結(jié)果,找到、找不到、有歧義。

      虛繼承
      • 可以實(shí)現(xiàn)菱形繼承結(jié)構(gòu),即常規(guī)繼承如果存在多繼承,可能將一個(gè)類兩次作為基類,存在多條繼承路徑。此時(shí)如果要引用基類的成員可能出現(xiàn)歧義性。派生類對(duì)象中可能存在多個(gè)基類的副本的情況。靜態(tài)成員除外,類的靜態(tài)成員只有一個(gè)副本
      • 虛繼承中,通過虛繼承派生的子類承諾共享虛基類的一份副本。此時(shí)再通過派生類派生的子類中訪問虛基類就不會(huì)存在歧義性。
      • 另外,如果虛繼承的情況中,只有某條路徑覆蓋了虛基類的成員,直接使用也不會(huì)引起歧義性,因?yàn)?mark>派生類中覆蓋的成員有更高的優(yōu)先級(jí)。但是如果在多于一條的虛繼承路徑中覆蓋了虛基類的成員。那么還是會(huì)引起歧義性。
      類的訪問控制public、private、protected
      • 在對(duì)類成員使用關(guān)鍵字時(shí):(在class中,成員默認(rèn)為private,struct中,成員默認(rèn)為public)
        • 一個(gè)成員是private,只能由所在類的成員函數(shù)和友元訪問和使用。
        • 一個(gè)成員時(shí)protected,只能由所在類及其派生類的成員函數(shù)和友元訪問和使用。
        • 一個(gè)成員是public,可以由任何函數(shù)訪問和使用。
      • 在對(duì)繼承使用關(guān)鍵字時(shí)(對(duì)基類使用關(guān)鍵字時(shí))【對(duì)public成員的訪問規(guī)則改變較大】
        • 基類是private,它的public和protected成員只能由派生類的成員函數(shù)和友元訪問。只有D的成員和友元能將派生類指針轉(zhuǎn)換到基類指針
        • 基類是protected,它的public和protected成員只能由派生類以及派生類的派生類的成員函數(shù)和友元訪問。也只有他們能將派生類指針轉(zhuǎn)換到基類指針
        • 基類是public,訪問規(guī)則與成員訪問控制規(guī)則一致。任何函數(shù)都能將派生類指針轉(zhuǎn)換到基類指針。
      類層次結(jié)構(gòu)中漫游(強(qiáng)制類型轉(zhuǎn)換) 1. dyanmic_cast
      • 要求多態(tài)性的操作對(duì)象。因?yàn)榉嵌鄳B(tài)性的操作對(duì)象不包含類型信息。

      • 能夠保存一定的運(yùn)行時(shí)需要的對(duì)象的類型信息,用于在類的繼承和組合關(guān)系中進(jìn)行安全的轉(zhuǎn)換

      • 適用于基類與派生類之間的轉(zhuǎn)換兄弟類之間的轉(zhuǎn)換,以及能夠由這兩種場(chǎng)景復(fù)合構(gòu)成的轉(zhuǎn)換。(向上強(qiáng)制、向下強(qiáng)制、交叉強(qiáng)制)。

      • 由于實(shí)現(xiàn)的是安全的類型轉(zhuǎn)換,所以通過if(C2* pc2 = dynamic_cast(pc1)),判斷指針在類型轉(zhuǎn)換之后的返回值是否為0,來確定是否實(shí)現(xiàn)了安全的類型轉(zhuǎn)換。對(duì)于引用的轉(zhuǎn)換的合法性,則通過dynamic_cast本身檢查。如果不能實(shí)現(xiàn)轉(zhuǎn)換,則會(huì)拋出bad_cast,可以通過try...catch塊設(shè)置處理器進(jìn)行處理。

      • 另外由于編譯器不能對(duì)void*所指向的存儲(chǔ)提供任何保證,所以dynamic_cast不能實(shí)現(xiàn)從void*出發(fā)的強(qiáng)制轉(zhuǎn)換,因?yàn)榫幾g器需要去查看對(duì)象,確定類型。此時(shí)需要使用static_cast進(jìn)行轉(zhuǎn)換。

      • void*的synamic_cast可以用于確定多態(tài)類型的對(duì)象的起始地址。

      • 如果需要跨系統(tǒng)保存一個(gè)非多態(tài)類型的對(duì)象的類型信息,可以將非多態(tài)類型的對(duì)象包裝在一個(gè)要穿過的系統(tǒng)的基類中。然后在需要使用的時(shí)候,利用dynamic_cast將對(duì)象提取出來。例如:

        class Io_obj{virtual Io_obj* clone() = 0;
        };
        
        class Io_date : public Date, public Io_obj{};
        
        void f(Io_obj* pio){Date* pd = dynamic_cast(pio);
        }
      2. static_cast
      • 對(duì)于dynamic_cast實(shí)現(xiàn)可用之前,有許多強(qiáng)制轉(zhuǎn)換通過其他機(jī)制保證安全。所以dynamic_cast實(shí)現(xiàn)的一些操作包含冗余。同時(shí)dynamic_cast具有運(yùn)行時(shí)開銷。
      • 另外用于實(shí)現(xiàn)從void*出發(fā)的強(qiáng)制轉(zhuǎn)換。
      3. const_cast
      • 用于實(shí)現(xiàn)const指針與非const指針之間的轉(zhuǎn)換。
      • 但是如果想要實(shí)現(xiàn)安全的轉(zhuǎn)換,需要程序員保證該const指針(volatile)本來就不是使用const(或volatile)聲明的。
      4. reinterpret_cast 指向成員的指針
      • 與多態(tài)指針的差異
      擴(kuò)展的類結(jié)構(gòu)信息——typeid
      • dynamic_cast保存更多類型信息
      • 滿足如得到一個(gè)類的名字或者它的布局信息。
      虛析構(gòu)函數(shù)和自由存儲(chǔ) 虛構(gòu)造函數(shù)

      你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


      本文題目:C++學(xué)習(xí)筆記——C++類層次結(jié)構(gòu)要點(diǎn)-創(chuàng)新互聯(lián)
      URL網(wǎng)址:http://ef60e0e.cn/article/iccdp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        安丘市| 蓬安县| 温州市| 名山县| 祁阳县| 莎车县| 惠东县| 合肥市| 曲沃县| 廉江市| 荆州市| 新源县| 双流县| 玛沁县| 牙克石市| 安塞县| 洛宁县| 新野县| 巴林左旗| 于都县| 大英县| 贵德县| 永福县| 牡丹江市| 诸暨市| 福州市| 友谊县| 靖安县| 永寿县| 邵阳县| 凉山| 鲁甸县| 六安市| 西和县| 旌德县| 雷州市| 余庆县| 固镇县| 长兴县| 青浦区| 南汇区|