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

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

C++ static的作用,非類中,和類中的static

2019-11-11 01:16:18
字體:
來源:轉載
供稿:網友

不考慮類 static 的三個作用

作用1: 隱藏

當同時編譯多個文件時,所有未加static前綴的全局變量和函數都具有全局可見性。

例如,同一模塊中,一個a.c,一個main.c a.c中

char a = 'A';void msg(){}

在main.c中可以直接訪問到,如果加上static, 那么將只能在本文件中訪問到,而無法被該模塊下的其他文件訪問到

作用2: static變量默認初始化為0

* 包括未初始化的全局靜態變量 和 靜態局部變量。(存儲在BSS段,默認都是0x00)

* 未初始化的全局變量 也是 默認初始化為 0

string sa[10]; // string 默認構造函數,為空串“”static int ia[10]; // 全局的,不論有無static 都初始化為0int main(){ string sa2[10]; // 局部,不過有默認的構造函數為空串“” int ia2[10]; // 局部,初始值是不確定的 return 0;}

作用3:保持局部變量的持久

staticb變量值初始化一次,聲明周期為整個源程序

在函數中的static變量,不像棧中存儲的局部變量會消失

int fun(int n){ static int sums = n; // 每次調用都想通過賦值初始化,其實只初始化了第一次而已 sums += n; return sums;}int main(){ for(int i=0;i < 5;i++) { 類中 static的作用

靜態數據成員

不屬于對象,屬于類,所有實例對象公用一份,

仍然有private,public,protect屬性

沒有對象實例,static成員依然存在類中

static 數據成員必須在類外初始化 當然,如果在加上關鍵const, 則是可以在類中進行初始化的

class A{public: static int a = 100; // 報錯};

這里寫圖片描述

class A{public: static int a;};int A::a = 100;****static成員存放在程序的全局(靜態)存儲中,不算在類大小中

靜態成員函數

與靜態數據成員一樣,仍然屬于類

this指針是非靜態成員函數有的, static成員函數將沒有this指針

靜態成員函數 無法訪問屬于類對象的非靜態數據成員,也無法訪問非靜態成員函數,只能調用其他的靜態成員函數,訪問靜態的數據成員

static成員函數不能聲明為const

const 修飾成員函數表示 該成員函數不會修改某個該函數所屬的對象,static不屬于任何對象

這里寫圖片描述

靜態成員之間的訪問

包括靜態成員函數訪問 靜態成員函數,靜態數據成員。靜態成員不能訪問非靜態的成員函數,不能訪問非靜態的成員數據,

非靜態的成員函數可以任意的訪問靜態成員函數 和 靜態數據成員

由于沒有this指針的額外開銷,靜態成員函數與類的非靜態成員函數相比速度上會有少許的增長。


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

圖片精選

主站蜘蛛池模板: 怀化市| 常州市| 高密市| 金华市| 宁海县| 瓦房店市| 辰溪县| 怀柔区| 日照市| 雷山县| 大名县| 井冈山市| 确山县| 仁寿县| 邓州市| 湖南省| 新泰市| 唐河县| 乌鲁木齐县| 武功县| 八宿县| 龙川县| 连城县| 石嘴山市| 方山县| 鸡泽县| 岳普湖县| 广东省| 出国| 洛阳市| 鲁山县| 乳山市| 杨浦区| 宁德市| 威宁| 池州市| 甘肃省| 南皮县| 民权县| 石柱| 无棣县|