C 類中的static成員學習總結

2021-07-31 09:31:00 字數 1732 閱讀 1430

c++類中的static成員學習總結

c++類背後蘊含資料抽象和封裝思想。資料抽象是一種依賴於介面和實現分離的程式設計技術。封裝是一項將低層次的元素組合起來形成的新的、高層次實體。

對於類而言c++的全域性物件會破壞封裝:全域性物件需要支援特定類的抽象的實現。因為c++類是資料抽象和封裝的結果,在定義類的時候只是類成員的宣告沒有實現。如果某個類的全體物件需要訪問乙個全域性物件,在定義類的時候就需要進行初始化且能夠被隨意的呼叫。因此,如果有某個類的全體物件需要訪問乙個全域性物件的需求時,應該在類中定義static成員來代替全域性物件。

1)static成員的名字是在類的作用域中。可以避免與其他類的成員或全域性物件名字衝突。

2)可以實施封裝。static成員可以是私有成員,而全域性物件不可以。

3)static成員與特定的類是關聯的。提高了程式的可讀性。

static成員函式不是任何物件的組成部分。因此static成員函式沒有this指標。static成員函式不能使用const宣告。因為const的作用就是承諾不修改該函式的所屬物件。static成員函式不能被宣告為虛函式。

static資料成員可以宣告為任意型別。但是static資料成員必須在類定義體的外部定義。static成員不是通過類建構函式進行初始化,應該在定義時進行初始化。

const static資料成員在類的定義體中初始化時,該資料成員仍必須在類的定義體之外進行定義。

static成員遵循正常的公有/私有訪問規則。

/*

filename:statictest.h

*/#ifndef test

#define test

#include using namespace std;

class staticclass

char retchar()

void setvalue( int a)

private:

//宣告乙個static int 變數。

static int value;

//宣告乙個const static char 變數。並用'c'對變數進行了初始化。

const static char str='c';

};#endif

/*

filename:statictest.cpp

*/#include "statictest.h"

//定義static int value

int staticclass::value = 1;

//定義 const static char str

const char staticclass::str ;

/*filename:main.cpp

*/#include "statictest.h"

int main(){

staticclass a;

a.setvalue(100);

cout<

[root@localhost class]# g++ -c statictest.cpp

[root@localhost class]# g++ -c main.cpp

[root@localhost class]# g++ -o test main.o statictest.o

[root@localhost class]# ./test

100c

如果乙個類需要訪問乙個全域性物件,可以使用static成員變數或成員函式來代替。

c 類中的static成員

概念 宣告為static的類成員稱為類的靜態成員 用static修飾的成員變數為,靜態成員變數,用static修飾的成員函式為,靜態成員函式。靜態成員變數一定要在類外進行初始化。特性 1 靜態成員為所有類物件所共享,不屬於某個具體的例項 2 靜態成員必須在類外定義 3 類靜態成員可以用 類名 靜態成...

C 之static類成員,static類成員函式

0.static修飾類中成員,表示類的共享資料 1.static類成員 在c primer裡面說過,static類成員不像普通的類資料成員,static類資料成員獨立於一切類物件處在。static類資料成員是與類關聯的,但不與該類定義的物件有任何關係。這句話什麼意思?就是static不會想普通類資料...

C 類的static成員

1,靜態 static 成員綜述 靜態成員 不是任意物件的組成部分,但由給定類的全體物件所共享的資料成員或函式成員。靜態成員是與類關聯的物件,而不是像普通的成員那樣與類的物件相關聯。靜態成員可以是資料成員,或成員函式。靜態成員遵循正常的共有 私有訪問規則。通過關鍵字static宣告靜態成員。2,靜態...