亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 如果父類中存在純虛函數,而子類中并沒有實現此函數,則子類便繼承了父類中的純虛函數,成為和父類一樣的抽樣類,都不可以實例化對象。

    查看全部
  • 在同時接了多個接口類的子類中,必須把接口類中所有的虛函數進行實現

    查看全部
    0 采集 收起 來源:[C++]接口類

    2020-02-27

  • 常見異常情況

    查看全部
    0 采集 收起 來源:[C++]異常處理

    2020-02-27

  • 異常處理關鍵字:

    1. try...catch..(try是嘗試的意思,就是指嘗試運行正常的邏輯;catch是捕獲的意思,就是在try過程中出現異常,就會捕獲異常,進行處理)

    2. throw(就是拋出異常的意思,拋出之后給catch進行捕獲)

      這個基本思想就是主邏輯和異常處理邏輯進行分離!

    查看全部
    0 采集 收起 來源:[C++]異常處理

    2020-02-27

  • 本質上所有的操作系統都是一個死循環,不停的接收以及響應用戶的處理和給予反饋
    真正的問題在于要分析清楚你所需要的所有資源的生命周期,包括內存的申請和釋放,外設的創建和銷毀等等。只要是你申請的資源,你必須確認他能夠及時正確的得到銷毀。
    還有一點是既然死循環必須要考慮何時和怎樣釋放CPU,例如利用信號量等待將當前任務/進程掛起,或者簡單的利用wait/sleep之類函數主動釋放。

    異常:程序在運行過程出現錯誤。

    異常處理:對有可能發生異常的地方做出預見性的安排。

    異常處理的基本思想:主邏輯與異常處理分離

    try與catch是一對多的關系。

    多態與異常處理的關系:Exception:HardwareErr,SizeErr,MemoryErr,NetworkErr



    查看全部
    0 采集 收起 來源:[C++]異常處理

    2020-02-27

  • 用typeid函數的時候要#include <typeinfo>

    查看全部
    0 采集 收起 來源:鞏固練習

    2020-02-27

  • 這個地方可以看到typeid(*obj).name() 打印出來的是class Bird進一步說明了typeid(X).name() 是識別X的數據類型,并非識別指針。

    查看全部
  • typeid注意事項:

    1. type_id返回一個type_info對象的引用;

    2. 如果想通過基類的指針獲得派生類的數據類型,基類必須帶有虛函數;否則我們只能返回定義時所使用的的數據類型。

    3. 只能獲取對象的實際類型。(只能判斷當前對象是基類還是子類,不能識別當前指針是基類還是子類)


    查看全部
    0 采集 收起 來源:[C++]RTTI

    2020-02-27

  • dynamic_cast注意事項:

    只能應用與指針和引用的轉換

    要轉換的類型中必須包含虛函數

    轉換成功返回子類的地址,失敗返回NULL


    查看全部
    0 采集 收起 來源:[C++]RTTI

    2020-02-27

  • RTTI(Run-Time Type Identification,運行時類型識別),它使程序能夠獲取由基指針或引用所指向的對象的實際派生類型,即允許“用指向基類的指針或引用來操作對象”的程序能夠獲取到“這些指針或引用所指對象”的實際派生類型(通俗話來說,就是能夠知道這個基類指針糾結是被哪個派生類在用)

    1. dynamic_cast是將一個基類對象指針(或引用)轉換到繼承類指針,dynamic_cast會根據基類指針是否真正指向繼承類指針來做相應處理

    2. typeid(*obj).name()來確定派生類指針類型。if(typeid(*obj).name() == typeid(Bird))進行指針比對。Bird *bird = dynamic_cast<Bird *>(obj)進行基類指針向派生類指針的轉換。

    查看全部
    0 采集 收起 來源:[C++]RTTI

    2020-02-27

  • 當類定義了虛函數之后,就會開拓一塊特殊的內存VFtable虛函數表,虛函數表指針指向一個位置,這個位置中又放有各個虛函數實現的內存的指針。

    當基類中定義虛函數,子類繼承并獨特實現了同名虛函數后,虛函數表的指針就發生了變化,之后虛函數表中函數實現位置指針更加不同,就如圖中的0xCCFF

    查看全部
  • 接口類Flyable,沒有cpp文件,因為根本不需要去實現。 并且沒有構造函數和析構函數,只有2個純虛函數。

    構造函數是用來實例化(或者叫構造對象)用的, 而接口是不允許進行實例化的, 因此沒有構造函數

    接口類只含有純虛函數,接口類不能被實例化,但可以有指向接口類的指針,以便于操縱各個子類。


    查看全部
  • 接口類定義:僅含有純虛函數的類(沒有數據成員,僅有成員函數且均為純虛函數)

    接口類更多的表達一種協議或能力


    查看全部
    0 采集 收起 來源:[C++]接口類

    2020-02-27

  • Animal ();僅僅是聲明,類外要對其進行定義Animal::Animal(){};

    而Animal(){};是在類內定義

    這個地方Animal的默認構造函數不能只寫成Animal();因為這樣寫只是申明了,沒有定義它(之前我們是在Animal.cpp里面定義了的),要定義它必須要加{}?。。。m然在定義里面我們什么都沒做?。?/p>

    而在實例化對象Dog的時候,我們調用了這個默認的父類構造函數Animal(){} , 所以這里我們不加{}就會報錯。

    但是在Dog類中,我們對默認構造函數寫成Dog(); 程序卻能夠正常運行,是因為我沒雖然沒有定義Dog(),但是我們也沒調用它。 我們調用的是函參的構造函數Dog(string name){},所以才沒有報錯。

    這個事情告訴我們,在沒有多個文件的的時候,聲明函數了一定要定義?。?/p>





    查看全部
    0 采集 收起 來源:單元練習

    2020-02-27

  • 虛函數一定要有函數體:比如

    virtial?void?eat(){cout?<<?"Animal--"?<<?m_strName?<<?"--?eat"?<<?endl;}

    如果沒有后面的函數體,只寫成:virtial void eat();計算機會認為這是一個純虛函數,但是會報錯,因為純虛函數后面要寫=0。

    查看全部
    0 采集 收起 來源:單元練習

    2020-02-27

舉報

0/150
提交
取消
課程須知
本課程是C++初級課程 1、熟練掌握C++語言基礎語法
老師告訴你能學到什么?
1、虛函數、虛析構函數、純虛函數 2、抽象類和接口類 3、運行時類別異常 4、異常處理

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!