const成員 和 static成員

2021-07-11 03:29:21 字數 1760 閱讀 1407

1.const成員變數

2.const成員函式

3.static成員變數

4.static成員函式

*******************純手敲,給自己加深印象**************************

1.const成員變數:

必須在建構函式初始值列表進行初始化,(或者申明const成員變數為static,可在類內初始化)

class account

void show()

private:

int i;

const int ii ;                //const成員必須初始化 通過建構函式初始值列表提供初值; 只能在物件建立的時候進行初始化; 或者同時申明為static,可以在類內初始化

int &ci ;                     //引用成員必須初始化 通過建構函式初始值列表提供初值};

------------------------------------------

2.const成員函式:

1)const是修飾this指標, 使得this這個常量指標指向乙個常量,即 const * (const)this,

所以const成員函式不會改變資料成員(非靜態)。

2)常量物件,以及指向常量物件的引用或指標可以並且只能訪問const成員函式。

3)非常量物件在const成員函式和非const成員函式兩個版本中會選擇非const成員函式。

4)如果有mutable成員變數,也是可以訪問const成員函式,並且可以改變mutable成員變數。

class a

int change() const};

-----------想到的暫時這麼多--------

3.static成員變數:

1)靜態資料成員,必須要在類外定義,沒有this指標,沒有建構函式會初始化它,不屬於任何物件。

類外定義靜態資料成員,指明所屬類名,以免和一般靜態資料混淆。

//class mystring

//// int  mystringlength()

////};

//int mystring::number ;                              //類外定義 ,必須說明作用域

2)靜態資料成員被類的所有物件所共享,包括該類派生類的物件。即派生類物件與基類物件共享基類的靜態資料成員

3)靜態資料成員可以成為成員函式的可選引數,而普通資料成員則不可以。

4)靜態資料成員的型別可以是所屬類的型別,而普通資料成員則不可以。

普通資料成員的只能宣告為 所屬類型別的 指標或引用。

5)const成員函式可以改變static資料成員

//class a

////double add() const

////};

//int a::m_a = 1; 

------------------------------------------

4.static成員函式

靜態成員函式只能訪問靜態資料成員而不能訪問非靜態資料成員

static與const成員變數

static 很多公司會喜歡問static的作用是什麼,如果不考慮在類當中的應用,其主要作用有以下三點 1 隱藏 加了static的全域性變數,在其他原始檔中就 看不見 了。也就是說,加了static,可以用來解決不同檔案裡定義了同名的函式或者變數。2 預設初始化為0 對於未初始化的全域性變數和靜態...

static成員和非static成員

1.靜態成員 1 所有的static方法不允許呼叫非static定義的屬性或方法,因為靜態函式成員屬於類的成員,例項成員變數是屬於某個物件的,而靜態方法在執行時,並不一定存在物件,但是靜態方法可以使用靜態變數 2 描述共享屬性,只需在屬性前新增static關鍵字即可,建立乙個類的多個例項,其stat...

static成員函式和static成員

c 的靜態成員是和類關聯的,它屬於某個類,但是不屬於某個特定的物件。靜態成員變數只儲存乙份供所有物件共用。所以在所有物件中都可以共享它。使用靜態成員變數實現多個物件之間的資料共享不會破壞隱藏的原則,保證了安全性還可以節省記憶體。但是可以通過物件呼叫靜態成員函式,雖然我們一般不會這麼做 1 class...