C Primer 第七章 類

2021-10-18 08:39:07 字數 1973 閱讀 6751

成員函式:宣告在類內,定義可內可外,定義在類內則是隱式內聯函式

在成員函式內部,可以直接使用呼叫該函式的物件的成員

類外部定義的成員的名字必須包含所屬類名

this本身是乙個常量指標,預設情況下指向非常量版本

在引數列表後加const可以修改this指向常量型別

編譯器首先編譯成員的宣告,然後才輪到成員函式體

介面函式與類宣告在同乙個標頭檔案內

建構函式沒有返回型別,並且不能被宣告成const

建構函式可以在const物件的構造過程中向其寫值,直到建構函式完成初始化過程,物件才獲得const屬性

若是沒有顯式定義建構函式,編譯器就會為我們的類隱式定義乙個預設建構函式

預設建構函式利用類內初始值和預設初始化來初始化成員

內建型別和復合型別(陣列和指標)必須賦予類內初始值,否則預設初始化就會產生未定義的值

若是類成員沒有預設建構函式,那麼無法預設初始化該類成員

有的編譯器不支援類內初始值,這時用建構函式初始值列表

=default在類的內部的話,則該預設建構函式內聯

若是建構函式的初始值列表忽略某個資料成員,則該成員以合成預設建構函式的方式隱式初始化

建構函式可以覆蓋類內初始值,但一般不要介樣,除非兩個值不同

友元宣告只能出現在類定義的內部

友元宣告沒有函式宣告的作用,友元宣告要跟類定義在同乙個標頭檔案中

型別成員必須先定義後使用

最好只在類外定義的地方說明inline

inline函式跟類定義在同乙個標頭檔案

乙個mutable成員永遠不會是const,即使是const物件的成員,在const函式內也能改變他

類內初始值必須用=號或者花括號

乙個const成員函式如果返回this物件則是常量引用

可以通過成員函式是否是const的進行過載

不完全型別的使用場景:引用和指標,以及宣告以之為引數或返回型別的函式

友元函式可以定義在函式的內部,此時隱式內聯

友元關係不存在傳遞性,每個類負責控制自己的友元函式

宣告成員函式作為友元時,需要加上所屬類

宣告的順序:先定義外類,宣告外函式,然後定義本類,進行友元宣告,最後定義外函式

友元函式就算在類內定義也要有函式宣告才可以使用

宣告中使用的名字都必須確保使用前可見

成員函式體在整個類可見之後才被處理

類中使用了外層作用域的型別名之後不可以重新定義該型別名

函式體中的名字查詢過程:函式體內使用前,類內,類外成員函式定義前

初始化const和引用成員的唯一機會是建構函式初始值

成員的初始化順序與類定義內的出現順序一致

轉換建構函式:只接受乙個實參的建構函式

explicit:類內宣告使用,類外定義不能用,只對乙個實參的建構函式有效

explicit建構函式只能用於直接初始化

聚合類:所有成員都是public和三沒有:建構函式,類內初始值,基類和virtual函式

初始值的順序必須與宣告的順序一致

字面值常量類:資料成員都是字面值的聚合類,或者至少有乙個constexpr建構函式,類內初始值是一條常量表示式,類型別成員的初始值要用自己的constexpr建構函式,並且使用析構函式的預設定義

constexpr可以宣告成=default或刪除函式的形式

constexpr建構函式體一般來說是空的

靜態成員函式不能是const的,也不能使用this指標

使用作用域運算子直接訪問靜態成員(成員函式可以直接使用

static只出現在類內的宣告語句,類外不能重複出現

靜態成員不是由類的建構函式初始化的,一般不定義在類內,將其定義與其他非內聯函式定義在同乙個標頭檔案

可以為constexpr靜態成員提供const整數型別的類內初始值

如果只是把有類內初始值的靜態成員用於常量表示式處(編譯時解析),不需要再類外定義,如若不然,類外還需要提供該靜態成員的定義,並且由類內的定義來提供初始值

靜態資料成員可以是不完全型別,並且可以用於預設實參

c primer 第七章 類

const更大的作用是可以修飾函式的引數,返回值,定義體。1.用const 修飾函式的引數 如果引數作輸出用,不論它是什麼資料型別,也不論它採用 指標傳遞 還是 引用傳遞 都不能加const修飾,否則該引數將失去輸出功能。const 只能修飾輸入引數 如果輸入引數採用 指標傳遞 那麼加const修飾...

C Primer 第七章 類

7.2 訪問控制與封裝 7.2.1 訪問說明符 7.2.2 友元 7.3 類的其他特性 7.4 類的作用域 7.5 建構函式高階 7.6 類的靜態成員 類的基本思想 封裝在成員函式內部,任何對類成員的直接訪問都被看做this的隱式掉用,也就是當我們使用成員變數bookno的時候,實際上隱式的使用了t...

C Primer 筆記 第七章 類

類的成員函式通過乙個名為 this 的隱式形參來訪問呼叫它的那個物件,在呼叫時,用請求該函式的物件位址初始化 this,this 是乙個常量指標。要將 this 宣告成指向常量的指標只需在函式的形參列表後加上 const。定義在類內部的函式是隱式的 inline 函式。類外部定義的成員名字必須包含其...