c 類的靜態成員

2021-10-12 00:16:01 字數 1464 閱讀 2959

由關鍵字static修飾說明的類成員,成為靜態類成員(static class member)。雖然使用static修飾說明,但與函式中的靜態變數有明顯差異。類的靜態成員為其所有物件共享,不管有多少物件,靜態成員只有乙份存於公用記憶體中。類的靜態成員分為靜態成員變數和靜態成員函式。

在類定義中,用關鍵字static修飾的資料成員為靜態資料成員。

該類產生的所有物件共享系統為靜態成員分配的乙個儲存空間,而這個儲存空間是在編譯時分配的,在定義物件時不再為靜態成員分配空間,即靜態成員的大小不佔物件的空間

靜態資料是該類所有物件所共有的,可提供同一類的所有物件之間資訊交換的捷徑。

靜態成員變數的初始化是在類外初始化,初始化的語法為

型別名 類名::變數名 = 值

1 類名::靜態資料成員名

2 通過類例項化出的物件來進行訪問

3 通過成員函式來進行訪問(靜態函式、非靜態函式都可以)

#include

#include

#include

#include

using

namespace std;

class

maker

void

show()

static

void

print()

public

:static

int count;

// 靜態資料成員

private

:int data;};

int maker::count =0;

// 靜態資料成員類外初始化

intmain()

函式成員說明為靜態,將與該類的不同物件無關,與靜態資料成員相反,為使用方便,靜態函式成員多為公有的,靜態函式的呼叫與靜態變數的呼叫類似,在物件之外

可以通過作用域運算子進行呼叫

類名::函式名(引數)

乙個常規的成員函式宣告描述了三件在邏輯上相互不同的事情

1、該函式能訪問類宣告的私用部分

2、該函式位於類的作用域之中

3、該函式必須經由乙個物件去啟用(有乙個this指標)

但是通過將函式宣告為static,可以讓它只有前兩種性質,即靜態成員函式由同一類的所有物件共享,它不具有指向某一具體物件的this指標,即不能通過靜態函式訪問普通的成員變數和成員函式,靜態函式只能管理類中的靜態成員和靜態函式

class

maker

void

show()

static

void

print()

public

:static

int count;

private

:int data;};

int maker::count =

0;

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

C 類靜態成員與類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...