C 靜態成員變數與靜態成員函式使用方法

2021-10-09 05:48:30 字數 1684 閱讀 9916

靜態成員函式

在類內,如果將乙個成員變數宣告為static,這種成員稱為靜態成員變數。與一般的資料成員不同,無論例項化多少個物件,都只有乙個靜態資料的拷貝,相當於這個類,所有物件共享

靜態成員變數,在編譯階段就分配空間,物件還沒建立時,就已經有空間了。

1.靜態成員必須在類內宣告,類外初始化

2.靜態成員不屬於某個物件,是某個類所有物件共享的,在為物件分配空間中不包括靜態成員所佔空間。

3.靜態成員變數的生命週期是整個工程。

4.靜態成員可以通過類名或物件名來使用。

class

school

;//靜態成員在類外初始化,初始化時不需要加static

int school::student_n =0;

int school::teacher_n =0;

intmain()

如果乙個類成員,想要實現共享,又要實現不可改變,那就用static const關鍵字修飾。

靜態成員用const修飾是,最好在類內初始化

class

school

;//也可在類外初始化

const

int school::teacher =20;

intmain()

在定義類時,函式前面加static說明函式是靜態成員函式。靜態成員函式的使用方式和靜態變數一樣,在物件沒建立之前,可以通過類名來呼叫。靜態成員函式主要為了訪問靜態成員變數,但不能訪問訪問普通成員變數。

靜態成員函式的意義,不在於資訊共享,資料溝通,而是在於管理靜態資料成員,完成對靜態資料的封裝。

1.靜態成員函式只能訪問靜態變數,不能訪問普通成員變數。

2.靜態成員函式的使用和靜態成員變數一樣。

3.靜態成員函式也有訪問許可權。

4.普通成員函式可以訪問靜態成員變數,也可以訪問非靜態成員變數。

class

school

//靜態成員函式只能訪問靜態成員屬性

static

void

changepeo1

(int num)

private

://靜態成員函式許可權也可以設定為私有

static

void

changepeo2

(int num)

public

:int student;

static

int teacher;};

int school::teacher =0;

//靜態成員變數在類外初始化

intmain()

總結

1.靜態成員必須在類內宣告,類外初始化

2.靜態成員不屬於某個物件,是某個類所有物件共享的,在為物件分配空間中不包括靜態成員所佔空間。

3.靜態成員變數的生命週期是整個工程。

4.靜態成員可以通過類名或物件名來使用。

5.靜態成員用const修飾是,最好在類內初始化。

6.靜態成員函式只能訪問靜態變數,不能訪問普通成員變數。

7.靜態成員函式的使用和靜態成員變數一樣。

8.靜態成員函式也有訪問許可權。

9.普通成員函式可以訪問靜態成員變數,也可以訪問非靜態成員變數。

C 靜態成員變數與靜態成員函式

類的靜態成員有兩種 靜態成員變數和靜態成員函式,語法是在普通成員變數和成員函式前加static關鍵字。0 定義class crect 1 存在原因 靜態成員變數在本質上是全域性變數。乙個類,哪怕乙個物件都不存在,其靜態成員變數也是存在的。靜態成員函式並不需要作用在某個具體的物件上,因此本質上是全域性...

c 靜態成員變數與靜態成員函式

普通成員變數每個物件各自持有乙份,而靜態成員變數只有乙份,被所有同類物件共享 普通成員函式一定是作用在某個物件上的,而靜態成員函式並不具體作用在某個物件上 訪問方式 訪問普通成員時,要通過物件名.成員名的方式,指明要訪問的成員變數是屬於哪個物件的,或要呼叫的成員函式作用於哪個物件 訪問靜態成員時,則...

靜態成員函式與靜態成員變數

此文針對於初學者或者對這一部分掌握不太清楚的人。首先靜態成員函式的宣告 static void setname qstring name 需要在函式的宣告前加static關鍵字。定義的時候和普通成員函式一樣,不需要加static,但是靜態成員函式只能訪問靜態成員變數和靜態成源函式。class dem...