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,靜態...