例項分析
定義:在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時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...