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

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

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

2019-11-11 01:30:42
字體:
來源:轉載
供稿:網(wǎng)友

不考慮類 static 的三個作用

作用1: 隱藏

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

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

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

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

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

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

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

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

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

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

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

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

靜態(tài)數(shù)據(jù)成員

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

仍然有private,public,protect屬性

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

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

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

這里寫圖片描述

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

靜態(tài)成員函數(shù)

與靜態(tài)數(shù)據(jù)成員一樣,仍然屬于類

this指針是非靜態(tài)成員函數(shù)有的, static成員函數(shù)將沒有this指針

靜態(tài)成員函數(shù) 無法訪問屬于類對象的非靜態(tài)數(shù)據(jù)成員,也無法訪問非靜態(tài)成員函數(shù),只能調用其他的靜態(tài)成員函數(shù),訪問靜態(tài)的數(shù)據(jù)成員

static成員函數(shù)不能聲明為const

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

這里寫圖片描述

靜態(tài)成員之間的訪問

包括靜態(tài)成員函數(shù)訪問 靜態(tài)成員函數(shù),靜態(tài)數(shù)據(jù)成員。靜態(tài)成員不能訪問非靜態(tài)的成員函數(shù),不能訪問非靜態(tài)的成員數(shù)據(jù),

非靜態(tài)的成員函數(shù)可以任意的訪問靜態(tài)成員函數(shù) 和 靜態(tài)數(shù)據(jù)成員

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


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

圖片精選

主站蜘蛛池模板: 临夏市| 张北县| 奈曼旗| 海南省| 乃东县| 偃师市| 濉溪县| 改则县| 沂水县| 华容县| 武定县| 本溪| 虹口区| 罗山县| 鹤壁市| 吉安市| 和林格尔县| 砀山县| 瑞金市| 维西| 广水市| 长春市| 武威市| 霍城县| 会宁县| 梅州市| 灵武市| 元氏县| 安阳县| 宜阳县| 桐城市| 新竹县| 杂多县| 喀喇| 万安县| 古蔺县| 高尔夫| 岢岚县| 乌拉特前旗| 桦川县| 利辛县|