成員函式:宣告在類內,定義可內可外,定義在類內則是隱式內聯函式
在成員函式內部,可以直接使用呼叫該函式的物件的成員
類外部定義的成員的名字必須包含所屬類名
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 函式。類外部定義的成員名字必須包含其...