c++總結

const在不同位置時的不同意義指針類型前:

聲明一個指向常量的指針,程序中不能通過指針來改變它所指向的值,但指針本身的值可以改變,即指針可以指向其他數據;

"*"號和指針名之間,聲明一個指針常量(常指針),指針本身的值不可改變,即不能指向其他數據,但指向的數據的值可以改變
兩個地方都加,聲明指向常量的指針常量,指針本身的值不可改變,指向的數據也不能通過指針改變

函數指針使用函數指針之前,必須先賦值,使它指向一個函數入口地址,賦值語法格式爲:函數指針名 = 函數名,其中函數名代表的函數必須是一個已經定義過的,和函數指針具有相同返回類型的函數,

指針調用函數格式:(*指針變量)(實參列表)
訪問權限public:可被任意實體訪問
protected:只允許本類及子類的成員函數訪問
private:只允許本類的成員函數訪問

構造函數創建對象時,自動調用構造函數,不能在程序中直接調用,可有任意類型參數,但不能有返回類型;
構造函數作用:爲對象分配空間、爲數據成員賦初值、請求其他資源
構造函數工作:初始化虛函數表、建立基類對象、建立非靜態數據成員對象、安置虛基類對象信息、執行構造函數體中的代碼

若一個類中沒有定義構造函數,編譯器會自動生成不帶參數的默認構造函數,格式爲:<類名>::<默認構造函數名>(){}析構函數析構函數作用:清除對象、釋放內存
析構函數工作:執行析構函數中的代碼、將對象佔據的存儲空間歸還系統、做公共及用戶要求的善後工作
析構函數無參數和返回值,一個類中只能定義一個析構函數,故不能重載,格式爲:~<類名>();內存佈局全局數據區:存放全局變量、靜態數據、常量
代碼區:存放類成員函數、其他函數代碼
棧區:存放局部變量、函數參數、返回數據、返回地址
堆區:自由存儲區
運算符重載重載形式重載爲類的成員函數,參數個數比原來的運算數少一個<函數類型> operator <運算符> (<形參列表>){<函數體>;}重載爲類的友元函數,參數個數與原運算數個數一樣多
friend <函數類型> operator <運算符> (<形參列表>){<函數體>;}函數重載:返回值類型可以相同可以不同,但形參列表一定不同

靜態數據成員初始化格式:<類型><類名>::<靜態數據成員>=<值>
引用格式:<類名>::<靜態數據成員>;
繼承方式私有繼承private:父類的公有成員和保護成員作爲子類的的私有成員,且不能被子類的派生類訪問
公有繼承public:父類的公有成員和保護成員作爲子類的成員時,仍保持原有狀態,父類私有成員仍爲私有
保護繼承protected:父類的公有成員和保護成員成爲子類的保護成員,且只能被他的派生類成員函數或友元訪問,父類私有成員仍爲私有

派生類構造函數調用順序:調用基類的構造函數,調用順序按繼承時說明的順序
調用子對象類的構造函數,調用順序按在類中說明的順序
派生類構造函數體中內容
函數模版template < 模板形參表 >template 返回值類型 函數名(形式參數列表){ 函數體語句}例:template void swap( T& v1, T& v2){ T temp; temp = v1; v1 = v2; v2 = temp;}虛函數虛函數必須是類的成員函數,不能是友元,但可以是另一個類的友元,不能爲全局函數,也不能爲靜態函數,析構函數可以爲虛函數,但構造函數不能爲虛函數

變量初始化局部變量:定義時,系統不會進行初始化
全局變量:定義時,系統自動初始化, 友元函數在類中定義過,但不是成員函數,定義在類外部,但有權訪問類中成員
this指針只有成員函數纔有this指針,友元函數沒有this指針
靜態成員函數與普通成員函數區別:靜態成員函數沒有this指針,只能訪問靜態成員(包括靜態成員變量和靜態成員函數)
普通成員函數有this指針,可以訪問類中任意成員,而靜態成員函數無this指針

發佈了11 篇原創文章 · 獲贊 1 · 訪問量 1778
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章