C Primer 筆記 第七章 類

2021-08-18 15:02:15 字數 1061 閱讀 3190

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

定義在類內部的函式是隱式的 inline 函式。

類外部定義的成員名字必須包含其所屬的類名,通過使用作用於運算子實現。

只有類,沒有宣告任何建構函式時,編譯器才會自動地生成預設建構函式。

struct 和 class 的預設訪問許可權不一樣,對於定義在第乙個訪問說明符之前的成員,使用 struct 關鍵字則是 public 的,使用 class 關鍵字則是 private 的。

2.友元的宣告只是指定了訪問許可權,並不是乙個通常意義上的函式宣告。

友元不是類的成員,也不受它所在區域訪問控制級別的約束。

mutable 成員永遠不會是 const ,即使它是 const 物件的成員。

通過區分成員函式是否是 const ,可以對其進行過載。

即使兩個類的成員列表完全一致,它們也是不同的兩個類。

友元宣告的作用僅僅是影響訪問許可權,在類的外部還是得宣告。

對於乙個型別,在它宣告之後定義之前是乙個不完全型別。可以定義指向這種型別的指標或引用或靜態資料成員,可以宣告以不完全型別作為引數或者返回型別的函式

在類中,成員如果使用了外層作用域中的某個名字(一種型別),那麼類不能在之後重新定義該名字。

如果類中國 乙個成員由另乙個成員初始化,那麼兩個成員的初始化順序與宣告的順序相關。

如果想定義乙個使用預設建構函式的物件,再定義的時候不能在物件名後加括號對,否則定義的只是乙個不接受任何實參的函式。

能同通過乙個實參呼叫的建構函式定義了一條從建構函式的引數型別向類型別隱式轉換的規則。但是類型別轉換只被允許一次。

靜態成員存在於任何物件之外,也被任何該型別的物件共享。

在類的外部定義靜態成員時,不能重複 static 關鍵字。

如果在類的內部對靜態成員提供初始值了,在定義的時候就不能再指定乙個初始值了。

可以為靜態成員提供 const 整數型別的類內初始值,要求靜態成員必須是字面值常量型別的 constexpr。

c primer 第七章 類

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

C Primer 第七章 類

成員函式 宣告在類內,定義可內可外,定義在類內則是隱式內聯函式 在成員函式內部,可以直接使用呼叫該函式的物件的成員 類外部定義的成員的名字必須包含所屬類名 this本身是乙個常量指標,預設情況下指向非常量版本 在引數列表後加const可以修改this指向常量型別 編譯器首先編譯成員的宣告,然後才輪到...

C Primer 第七章 類

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