C 類的靜態成員

2021-08-09 18:32:20 字數 1739 閱讀 3971

類的靜態成員由整個類所共享,而不屬於任何乙個物件。

在成員的宣告之前加上static來將它宣告為靜態成員。

類的靜態成員可以是常量、引用、指標、類型別,也可以是public或private

class a

static

void rate(double); //宣告乙個靜態成員函式

private:

static

double interestrate; //宣告乙個靜態成員變數

};

因為靜態成員不屬於任何乙個物件,所以靜態成員函式也不包含this指標

因為靜態成員函式不與普通成員變數相關,所以也不能宣告成const的

double r;

r =a::rate();

儘管類的靜態成員不屬於任何乙個類的物件,但可以通過類的物件(指標、引用)來訪問它。

a obj;

a *pointer =

&obj;

r = obj.rate(); //通過類的物件訪問

r = pointer->rate(); //通過類的指標訪問

class account 

//直接使用靜態變數成員interestrate,並且不需要作用域運算子,但interestrate必須先定義和初始化

private:

static

double interestrate;

};

但反過來,在類的靜態成員函式中使用普通成員卻不可以,因為類的普通成員依託於具體的物件,在靜態成員函式中這些普通成員還沒有真正的被生成出來。

需要注意的是,static關鍵字只在類內宣告時出現一次,類外定義時不可重複

void account::rate(double newrate)    //不可重複static

因為靜態資料成員不屬於任何乙個物件,所以他們不是在建立類的物件時被定義的,意味著他們不是由類的建構函式初始化的

因此,必須在類的外部定義和初始化每個靜態資料成員

類內的靜態資料成員只能算宣告,並沒有被真正定義,必須在類外定義和初始化後才可以使用

在類的外部定義並初始化乙個靜態資料成員和定義成員函式差不多

double account::interestrate = initrate();

//可以使用類的靜態函式成員

其實可以用const或constexpr來在類內初始化靜態變數成員

class

account;

class

bar;

class screen;

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

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

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

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

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

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