c Primer讀書筆記(第七章 類)

2021-10-25 04:07:06 字數 2607 閱讀 1151

類的基本思想:資料抽象(data abstraction)和封裝(encapsulation)

資料抽象依賴於:介面(inte***ce)和實現(implementation)分離的程式設計

引入this指標

成員函式可以通過乙個this指標來訪問呼叫它的那個物件

引入const成員函式

const成員函式作用是將this宣告為指向常量地指標,使得成員函式不能改變呼叫它的物件的內容。

預設建構函式

只有當乙個類沒有宣告任何建構函式,編譯器才能自動生成預設建構函式

=default

要求編譯器生成預設建構函式

建構函式初始值列表

sales_data

(const std::string &s,

unsigned n,

double p)

:bookno

(s),

units_sold

(n),

revenue

(p*n)

class預設private,struct預設public

允許其他類或者函式訪問它的非公有成員

friend sales_data add

(const sales_data&

,const sales_data&

);

關鍵概念:封裝的益處

確保使用者**不會無意間破壞封裝物件的狀態

被封裝的類的具體實現細節可以隨時改變,無需調整使用者級別的**

令成員函式作為內聯函式

定義在類內部的成員函式是自動inline的

也可以在類外部用inline關鍵字修飾函式的定義

過載成員函式

和過載函式類似

可變資料成員

在成員變數宣告中加入mutable關鍵字,使成員變數永遠不會是const。乙個cosnt成員函式也可以改變乙個可變資料成員的值。

基於const的過載

常量物件和非常量物件通過判斷物件是否是const過載了成員函式

類之間的友元關係

友元不具有傳遞性

友元類可以訪問當前類物件的私有成員

令成員函式作為友元

可以只把乙個類的某些成員函式宣告為友元類。

class

screen

;

2.步驟:

定義window_mgr類,宣告但不定義clear函式。在clear使用screen成員之前先宣告screen

定義screen,包括對clear的友元宣告

最後定義clear

class

screen

;class

window_mgr

;class

screen

;void window_mgr::

clear

(screen &s)

函式過載和友元

一組過載函式宣告為友元,需要對其中每乙個函式進行宣告

友元宣告和作用域

友元宣告不能替代宣告,知識影響訪問許可權

在建構函式體中對成員變數進行「初始化」,其實是先進行預設初始化再進行賦值。

建構函式的初始值有時必不可少

當成員是const或者是引用型別的情況下,必須要進行列表初始化

列表初始化順序是根據成員變數定義的宣告的順序保持一致

只允許一步類型別轉換

抑制建構函式定義的隱式轉換

建構函式宣告為explicit加以阻止

explicit只對乙個實參的建構函式有效;需要多個實參的建構函式不能用於隱式轉換

使得使用者可以直接訪問其成員,並且具有特殊的初始化語法形式。

有時候類需要它的一些成員與類本身直接相關,而不是與類的各個物件保持關聯。

靜態成員存在於物件之外,物件中不包含任何靜態資料成員。

靜態成員函式也不與任何物件繫結在一起,不包含this指標。(不能宣告成const,也不能使用this)

一旦被定義就存在於程式的整個宣告週期中

一般類的靜態成員都需要在類外初始化

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

第七章讀書筆記

儘管linux 驅動直接與硬體打交道,但並不是 linux 驅動直接向硬體中的記憶體寫資料,而是與本機的 i o記憶體進行互動。所謂 i o記憶體是通過各種介面連線到主機的硬體在主機記憶體中的對映。led驅動與 word count 驅動的實現步驟類似,只是某些功能使用了不同的實現方法。對於解除安裝...

C Primer 筆記 第七章 類

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

c primer 第七章 類

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