學(xué)習(xí)SystemC應(yīng)具備的C++基本語法

學(xué)習(xí)SystemC應(yīng)具備的C++基本語法

  1. class
    class是對類型的變量、方法的定義原型 對象是類的實例化;
    類由兩部分組成。類聲明:以數(shù)據(jù)成員的方式描述數(shù)據(jù)部分,以成員函數(shù)(方法)的方式描述接口;類方法定義:描述類成員函數(shù)的具體實現(xiàn)
    類聲明提供了類的藍圖,而類方法定義提供了類的行為細節(jié);
    類實現(xiàn)了數(shù)據(jù)和行為細節(jié)的對外封裝;

  2. constructor and destructor
    構(gòu)造函數(shù)是一個與類同名的共有成員函數(shù),沒有返回值類型,即使void也不行;
    構(gòu)造函數(shù)可以重載,即一個類可以有多個構(gòu)造函數(shù);
    若類沒有顯式構(gòu)造函數(shù),編譯器會自動生成一個空的構(gòu)造函數(shù);
    若構(gòu)造函數(shù)的參數(shù)需要默認值,則只能在聲明中提供。當既有聲明又有定義時,定義中不能出現(xiàn)默認值。若函數(shù)只有定義,則默認參數(shù)才可出現(xiàn)在定義中;
    若構(gòu)造函數(shù)的參數(shù)列表中有一個默認值,那么這個參數(shù)右側(cè)所有參數(shù)必須要有默認值;
    若一個構(gòu)造函數(shù)所有參數(shù)都有默認值,其他構(gòu)造函數(shù)將失效;

  3. return from function
    函數(shù)return值的方式與函數(shù)初始化一個變量或形參的方式完全一樣:返回的值用于初始化調(diào)用點的一個臨時量,該臨時量就是函數(shù)的返回結(jié)果;
    函數(shù)返回一個對象時,會自動調(diào)用類的構(gòu)造函數(shù);
    能否返回函數(shù)的一個局部變量?可以通過值拷貝的方式返回函數(shù)的一個局部變量;
    千萬不要通過引用、指針方式返回函數(shù)的局部變量、局部對象;
    一旦函數(shù)調(diào)用完成,函數(shù)棧中的局部對象空間會被釋放,指針和引用將指向一個不存在的對象;
    如果函數(shù)返回指針、引用或類的對象,我們就能夠使用函數(shù)調(diào)用的結(jié)果訪問結(jié)果對象的成員;

  4. dynamic memory allocate and release
    不要使用delete來釋放不是new分配的內(nèi)存;
    不要使用delete同一內(nèi)存塊兩次;
    使用new[]為數(shù)組分配內(nèi)存,則應(yīng)使用delete[]釋放;
    使用new為一個實體分配內(nèi)存,則應(yīng)使用delete釋放;
    對空指針使用delete是安全的;

  5. template class
    模板不是一個類;
    模板是C++編譯器指令,說明了如何生成類和成員函數(shù)定義;
    不能將模板成員函數(shù)放在獨立的實現(xiàn)文件中;
    一個模板可以作為另一個模板的參數(shù);

  6. public, private and protected
    public與private、protected的區(qū)別;
    在類外可以直接訪問類中public成員,但只能通過public成員函數(shù)間接訪問類中private、protected成員;
    private與protected的區(qū)別;
    派生類的成員可以直接訪問基類的protected成員,但不能直接訪問基類的private成員;

  7. polymorphism
    多態(tài),是面向?qū)ο蟮某绦蛟O(shè)計語言最核心的特征。多態(tài),意味著一個對象具有多重特征,從而對應(yīng)著不同的屬性和方法,即一個實體同時具有多種表現(xiàn)形式;
    同一操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。在運行時,可以通過指向基類的指針,來調(diào)用派生類的方法;
    在C++中,實現(xiàn)多態(tài)有以下方法:虛函數(shù)、抽象類、覆蓋、模板;
    重載與多態(tài)是完全不同的兩個概念;

  8. overload
    重載體現(xiàn)了一物多用的思想,它只是編程語言提供的一種機制,與OOP無關(guān);
    函數(shù)重載:在相同的聲明域中的函數(shù)名相同的、而參數(shù)列表不同的,即通過函數(shù)的參數(shù)表而唯一標識并且來區(qū)分函數(shù)的一種方法;
    操作符重載:可使運算符處理不同類型數(shù)據(jù)的一種方法;如“<<”和“>>”即可以作為移位運算符,又可以作為輸出流中的插入運算符和輸入流中的提取運算符;

  9. const
    const定義常量時,同時定義了常量的類型。而#define只是簡單的文本替換,除了可以定義常量外,還可以用來定義一些簡單的函數(shù),有點類似內(nèi)聯(lián)函數(shù)(inline);
    用于指針,const是一個左結(jié)合的類型修飾符;
    int const *A; //A可變,*A不可變
    int *const A; //A不可變,*A可變
    限定函數(shù)的傳遞值參數(shù):
    void function(const int &var); //傳遞過來的參數(shù)在函數(shù)內(nèi)不可以改變.
    限定函數(shù)返回值型:
    const int function();
    const myclassname function();
    限定函數(shù)類型
    void function() const; //常成員函數(shù), 常成員函數(shù)是不能改變其所在類中成員變量值的函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容