學(xué)習(xí)SystemC應(yīng)具備的C++基本語法
class
class是對類型的變量、方法的定義原型 對象是類的實例化;
類由兩部分組成。類聲明:以數(shù)據(jù)成員的方式描述數(shù)據(jù)部分,以成員函數(shù)(方法)的方式描述接口;類方法定義:描述類成員函數(shù)的具體實現(xiàn)
類聲明提供了類的藍圖,而類方法定義提供了類的行為細節(jié);
類實現(xiàn)了數(shù)據(jù)和行為細節(jié)的對外封裝;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ù)將失效;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é)果對象的成員;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是安全的;template class
模板不是一個類;
模板是C++編譯器指令,說明了如何生成類和成員函數(shù)定義;
不能將模板成員函數(shù)放在獨立的實現(xiàn)文件中;
一個模板可以作為另一個模板的參數(shù);public, private and protected
public與private、protected的區(qū)別;
在類外可以直接訪問類中public成員,但只能通過public成員函數(shù)間接訪問類中private、protected成員;
private與protected的區(qū)別;
派生類的成員可以直接訪問基類的protected成員,但不能直接訪問基類的private成員;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)是完全不同的兩個概念;overload
重載體現(xiàn)了一物多用的思想,它只是編程語言提供的一種機制,與OOP無關(guān);
函數(shù)重載:在相同的聲明域中的函數(shù)名相同的、而參數(shù)列表不同的,即通過函數(shù)的參數(shù)表而唯一標識并且來區(qū)分函數(shù)的一種方法;
操作符重載:可使運算符處理不同類型數(shù)據(jù)的一種方法;如“<<”和“>>”即可以作為移位運算符,又可以作為輸出流中的插入運算符和輸入流中的提取運算符;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ù)