C 類的其他特性(筆記版本)

2021-08-28 17:25:32 字數 1754 閱讀 8867

型別成員、

就是類的成員是乙個型別

ok舉個例子

class peron{

public :

typedef std::string zm;

private:

zm name = "love_ke";

zm address = "anywhere";

我們的person類在public部分定義了zm,這樣使用者就可以使用這個名字。因為封裝嘛,無形裝逼最為致命,不讓使用者知道,我們用了乙個string來放它的資料。(當然我們之前學過的using也可以做到)

注意:型別先定義後使用

可變資料成員

乙個可變資料成員永遠不可能是const,即使它是const物件的成員

通過關鍵字 mutable來定義。

型別資料成員的初始值

我們定義了建構函式,在進行列表初始化的時候,其會自動匹配建構函式去初始化我們的型別資料成員。

當然也可以進行賦值初始化。(僅僅是初始化的它的資料成員)

關於如何定義並使用類型別及友元

關於類型別

每個類定義了唯一的型別

對於兩個類來說,即使他們的成員完全一致,這兩個類也是不同的型別。

對於乙個類來說,要建立它的物件 必須先定義它才行

所以乙個class的友元class 想要使用 該class的資料成員 必須先定義該class,再定義友元class。

(c++ primer我覺得解釋的巨拗口,)

舉個例class a

friend:class b;

public:

int x;

class b 

public:

int y = x;

但是class a和class b的位置對調就會出現問題

類之間的友元關係,我這樣解釋

假設有兩個小朋友 小k,小d。(小k有糖,小d有玩具)

小k說:從此以後,小d就是我的好朋友了。

這句話的意味著小k拿小d當好朋友,所以小k允許小d吃他的糖 (並不意味著小k能玩小d玩具)

僅有小d也說:小d你也是我好朋友了。才意味著小k能玩小d的玩具。

(所以你看我們程式設計師都心智多淳樸,拿別人當朋友是開放朋友對自己的訪問許可權,而不是要別人的訪問許可權)

扯回來,總結一句話,乙個class定義友元,就是允許友元對該class的成員進行訪問

關於類內的作用域

只提一句 :編譯器處理完類中的全部宣告後才會處理成員函式的定義。

關於名字定義

類內層定義的名字,盡量和外層不要相同。(類內層定義的名字會隱藏外層相同的名字)

成員函式的形參名字,盡量不要和類內層相同。(如果相同的話,形參會隱藏類內物件名字,可以用this指標強制訪問)

建構函式初始化順序,盡量與資料成員 宣告順序一致

explicit關鍵字宣告建構函式時,它將只能以直接初始化的形式使用,而且,編譯器將不會在自動轉換過程中使用該建構函式

所有的隱式轉換只進行一步

聚合類:

所有成員都是public

沒有定義任何建構函式

沒有類內初始值

沒有基類,也沒與virtual函式

類的其他特性

include include using namespace std class screen contents初始化的意思是,有ht乘wd個字元c初始化乙個string型別 char get const 讀取游標處的字元 inline char get pos ht,pos wd const 顯...

C 特性類 筆記

conditional obsolete 附加表示目標結構的狀態 新增乙個類,以attribute結尾 這個類繼承 system.attribute 宣告為私有類 sealed 定義需要描述的字段和屬性 attributeusage 裡面的值為該特性可以應用到那些結構上 attributetarge...

C 異常6 其他異常特性

雖然throw catch機制類似於函式引數和函式返回機制,但是還是有些不同之處。其中之一是函式fun 中的返回語句將控制權返回到呼叫fun 的函式a中,但throw語句將控制權向上返回到第乙個這樣的函式 包含能夠捕獲相應異常的try catch組合。另乙個不同之處是,引發異常時,編譯器總是建立乙個...