第十三章 類

2021-07-04 17:49:32 字數 1256 閱讀 9486

1.類簡單地說是乙個性的資料型別。類當中有資料成員,和成員函式。類的基本思想就是體現出資料的抽象和封裝。

2.這裡只需要說明乙個問題即可:就是類成員函式的const型別:

class screen

public:

const int get(const int& i , const int& j)const;

這裡需要解釋一下const int get(const int& i , const int& j)const;這一句的四個const分別表示是什麼?本來這個內容是在第七章函式的時候已經介紹過了。在這裡有了進一步的深刻了解。下面詳細介紹一下:

第乙個const 表示:const int 是表示返回型別是const 的int型。如果這裡的第乙個const存在的話,那麼第四個const必須存在。

第二個const表示:const int& i 是引數型別,表示const的引用型別,避免傳遞引數進行複製實參。

第三個跟第二個是一樣的。

第四個const表示:當第四個const存在的時候,成員函式叫做const成員函式。這個const表示的是在呼叫成員函式當中隱含了this指標指向類中的資料成員的型別是const。即在呼叫成員函式的時候,呼叫成員函式的物件的資料成員是const型別的。即此時的this指向的資料成員是const型別。而this指標本身就是乙個const型別的。有了第四個const,那麼this指向的資料成員也就是const型別的咯。

3.可變的資料成員:

有時候我們希望類的資料成員(甚至在const成員函式裡面)可以修改。我們可以通過將他們宣告為mutable來實現。如: mutable size_t occur;occur就是乙個可變的值。即可以修改的值。

4.建構函式初始化的方式問題:

一是通過初始化列表來實現初始化,這一類的叫做建構函式初始化列表,一般用在含有const資料成員和引用的時候需要採用初始化列表。

二是通過在建構函式體內進行賦值來實現初始化。

5.**型別轉換:這個操作是通過建構函式來實現型別轉換,具體的是含有單個形參的建構函式將形參的型別轉變成類型別的資料。如果需要需要抑制**型別轉換可以將建構函式宣告為explicit。即explicit sales_item():isbn(),units_sold(0),revenue(0){}這就抑制了隱式轉換。

6.友元:友元機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類。

7.static類成員:記住一點即可:除了const的資料成員可以在類內初始化,其他的型別的資料成員如果宣告為static的話,都是在類內定義,在體外初始化的。 

第十三章 類繼承

1 派生類物件包含以下特徵 1 派生類物件儲存了基類的資料成員 派生類繼承了基類的實現 2 派生類物件可以使用基類的方法 派生類繼承了基類的實現 2 繼承特性中需要另外新增什麼?1 派生類需要自己的建構函式 2 派生類可以根據需要新增額外的資料成員和成員函式 派生類需要自定義的函式都用虛函式表示 注...

第十三章 併發

13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...

第十三章 事件

1 事件的作用 事件是對委託的封裝,如同屬性對字段的封裝。封裝後可以在委託上實現更複雜的邏輯。1.1 封裝訂閱 委託允許使用 對其進行賦值,但向乙個委託例項賦值多個委託時,使用 會造成覆蓋之前的委託。事件只支援 或 對事件進行賦值 1.2 封裝發布 委託可以在其他類進行訪問,而事件可以確保只有包容類...