C 類的靜態成員及應用例項

2021-10-04 17:37:40 字數 1977 閱讀 7220

例項分析

定義:在c++類中宣告成員時加上static關鍵字宣告的成員。

【注意】宣告為static的類成員或者類函式可以在類的範圍內共享。

【注意】

1.用關鍵字static宣告

2.靜態資料成員為該類的所有物件共享,因此具有靜態生存期

3.必須在類外定義和初始化,用(::)來指明所屬的類

靜態成員函式與普通函式成員的區別:

①.外部訪問類的靜態函式成員可以直接通過類名進行訪問,如cstudent::getcount()。雖然靜態成員不屬於類的某個物件,但我們仍然可以使用類的物件、指標來訪問靜態成員。

②.類的靜態成員函式無法直接訪問普通資料成員,而類的任何成員函式都可以訪問類的靜態資料成員。

【注意】

1.類外可以使用類名和作用域操作符來呼叫靜態成員函式

2.靜態成員函式只能引用屬於該類的靜態資料成員或靜態成員函式

【問題描述】

編寫cstudent類,並建立物件陣列,分析物件的建立與釋放過程中建構函式與析構函式的呼叫。

具體要求:

1、cstudent類包括兩個私有成員:姓名和年齡

2、cstudent類具有乙個靜態資料成員count,在物件被建立時自動加1,在物件被釋放時自動減1

3、在建構函式中輸出"*** is contructing", 在析構函式中輸出「*** is destructing」

4、請根據main函式分析其他功能,並完成cstudent類的設計

5、請分析塊作用域的物件建立與釋放的原因

【樣例輸出】

現在有學生0

noname is contructing

noname is contructing

noname is contructing

noname is contructing

noname is contructing

name:noname

現在有學生5

noname is destructing

noname is destructing

noname is destructing

noname is destructing

noname is destructing

現在有學生0

tom is contructing

jerry is contructing

name:tom

name:jerry

現在有學生2

jerry is destructing

tom is destructing

現在有學生0

已給出main函式如下:

int main()

cstudent

(const std::string &s,

int a)

//建構函式

~cstudent()

//析構函式

void

printname()

//按題目要求輸出姓名

static

intgetcount()

//返回學生個數};

int cstudent::count =0;

//定義靜態成員變數,同時初始化為0

intmain()

cout<<

"現在有學生"

<;for

(int i =

0; i <

2;i++

) cout<<

"現在有學生"

<} cout<<

"現在有學生"

<< endl;

return0;

}

靜態類 靜態方法 靜態成員和例項成員的比較

任何專案中都會使用到靜態類 靜態方法 靜態成員和例項成員了。那麼這幾個名詞到底有哪些區別呢?所以例項成員的存在必須要有物件例項的存在,如果物件例項都不存在了,那麼就將無法訪問 而靜態成員只是依賴於類的存在與否,也就無需宣告和例項化物件了。如下方這段示例 class program class mys...

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

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

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

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