国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++-靜態成員

2019-11-08 01:33:01
字體:
來源:轉載
供稿:網友

靜態成員的生命及意義

靜態成員遵守訪問權限的限定規則。 static type dataname;

靜態成員數據時屬于類的,整個類只有一份拷貝,相當于類的全局變量,供該類所有對象共用,能夠被該類的所有對象所訪問;非靜態成員數據是屬于對象的,每個對象都有非靜態成員數據的一份拷貝,為該對象專用。

靜態成員函數也是屬于整個類的,它只能訪問屬于該類的靜態成員(包括靜態成員數據和靜態成員函數)。

靜態成員的定義

在類的聲明中將數據成員指定為靜態成員,只是一種聲明,并不會為該數據成員分配內存空間,在使用之前應該對它進行定義。靜態數據成員常常在類外進行定義: 類型 類名::靜態成員名 類型 類名::靜態成員名=初始值; 例如:

#include <iostream>using namespace std;class A { static int a; public: int get() { return a; }};int A::a = 1;int main () { A a; cout << a.get() << endl; return 0;}

注意: 1、在類外定義數據成員時,不能加上static限定詞; 2、在定義靜態數據成員時可以指定初始值,若沒有則默認為0.

原則上類的靜態數據成員必須在類外定義,否則就會出錯,若沒有,則會在定義該類的第一個對象時定義相關的靜態數據成員,即為所有的靜態數據成員分配內存空間,并初始化為0。 換句話說,靜態成員和全局變量一樣,只是編譯器將其限制在類作用域內了。

靜態成員的訪問

靜態成員屬于整個類,如果將它定義為類的公有成員,就可在類外用下面兩種方式訪問: 1、通過類名訪問(非靜態不可以) 類名::靜態數據成員名; 類名::靜態成員函數名( ); 2、通過對象訪問 對象名.成員名

例如: 一個book類,每一個對象表示一本書。書的總本數和總價格會動態變化,如果不將其設置為靜態數據成員,只有通過全局變量才能實現這樣的功能,但全局變量會破壞類的封裝性,給程序維護帶來負擔,也可能會誤改。因為靜態成員函數屬于整個類,不論通過哪個對象調用到的靜態成員函數都是相同的,因此建議通過以 類名::靜態成員函數名( ); 的方式來調用以區別普通成員函數。

說明: 1、靜態成員函數可以在類內部或外部定義,還可以定義成內聯函數; 2、靜態函數只能訪問靜態成員; 3、在類外定義靜態成員函數時,不能加上static限定詞; 4、靜態成員函數可以在定義類的任何對象之前被調用,非靜態成員只有在定義對象后,通過對象才能訪問。

補充文章


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 原阳县| 邳州市| 开平市| 行唐县| 绥棱县| 龙江县| 乌兰察布市| 浑源县| 积石山| 克山县| 勐海县| 锦屏县| 琼中| 盐山县| 深水埗区| 铁岭市| 炉霍县| 浪卡子县| 马山县| 若羌县| 东至县| 临潭县| 克什克腾旗| 嘉峪关市| 喀喇沁旗| 漯河市| 永和县| 阳东县| 简阳市| 双辽市| 贡觉县| 特克斯县| 武宣县| 东丽区| 弥渡县| 秭归县| 城口县| 柳河县| 甘肃省| 崇左市| 铅山县|