亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

c++中的static修飾符示例詳解

2020-02-24 14:30:40
字體:
來源:轉載
供稿:網友

靜態類成員是與類本身相關的成員數據和函數,而不是與類對象相關的成員數據和函數。所以靜態成員數據也稱為類數據,靜態成員函數也稱為類方法,武林技術頻道小編為大家介紹c++中的static修飾符示例詳解,希望對你有幫助!

前言

本文主要給大家介紹了關于c++中static修飾符的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

下面一段是引用自effective c++ 中的一句話:

所謂的static對象,其壽命是從構造出來到程序結束為止(以下文章不再贅訴)。因此stack和heap-base對象都被排除。這種對象包括global對象,定義于namespace作用域內的對象,在classes內,在函數內,以及在file作用域內被聲明為static的對象。

所以static在c++中可以存在在一下幾種情況:

1.存在于全局作用域中的靜態變量

//全局可訪問,在內存中只有一份拷貝,可被很多函數修改。#include <iostream>static int i = 1; //作用域是整個filevoid get(){ std::cout << "in func , the i is " << i << std::endl;}int main(){  std::cout << "the i is " << i << std::endl;  get();  return 0;}

2.存在于函數當中的靜態變量

// 只能在這個函數中才能被調用。// 函數調用結束后,一般局部變量都被回收了,靜態變量還存在#include <iostream>void get(){  static int i = 1;  std::cout << "the i is " << i << std::endl;  i++;}int main(){  get(); // i = 1  get(); // i = 2  std::cout << "the i is " << i << std::endl; // 這種是錯誤的  return 0;}

3.存在于類的成員變量中的靜態變量

//其實原理跟函數中的靜態變量類似,類實例化出來的對象被銷毀后,// 但是類變量(靜態成員變量)還是存在在內存中的#include <iostream>class Widget{public:  Widget(int i){    a = i;   }  void get();private:  static int a; // 聲明靜態變量};int Widget::a = 1; // 由于是類變量不是屬于專屬于一個對象的,被所有對象共享     // 所以需要在類外定義void Widget::get(){  std::cout << "the a is " << a++ << std::endl;}int main(){  Widget w(1);  w.get(); // a = 1  w.get(); // a = 2  return 0;}

4.存在于類中成員函數中的靜態變量

#include <iostream>class widget{ public: widget(){} void get();};void widget::get(){ static int i = 1; //成員函數中的靜態變量的作用域范圍跟普通局部變量的作用域范圍是一樣的 std::cout << "in func, the i is " << i++ << std::endl;}int main(int argc, char const* argv[]){ widget w1; w1.get(); // in func, the i is 1 widget w2; w2.get(); // in func, the i is 2 return 0;}

5.存在于命令空間中的靜態變量

#include <iostream>namespace Widget { static int i = 1; // 在該命名空間可用 void get(){ std::cout << "the i is " << i++ << std::endl; }} // namespace Widgetint main (){ using namespace Widget; get(); //the i is 1 get(); // the i is 2 return 0;}

6.存在于全局作用域的靜態函數

// 其實跟一般的函數差不多,// 但是它將該函數的鏈接屬性限制為內鏈接,//只能在本編譯單元中使用(也就是本文件),//不能被extern等在外部文件中引用static void get(){ std::cout << "this is staic global func" << std::endl;}int main(){ get(); get(); return 0;}

7.存在于類中的靜態函數

#include <iostream>class Widget{ public: Widget(int i){  a = i; } static void get(); // 聲明靜態函數  private: static int a; int b;};int Widget::a = 1;void Widget::get(){ std::cout << b << std::endl; //這是錯誤的,因為靜態函數和靜態變量直接能夠         // Widget::get()調用,不需要實例化,所以不能         // 調用只能實例化才能初始化的成員變量。 std::cout << a << std::endl; //ok}int main(){ Widget w(1); w.get(); return 0;}

總結:

不管是什么靜態變量,它的lifetime是從他被構造出來到程序結束為止。

static類型的變量跟其他普通的變量的不同在于在內存中的存在形式不同,例如存在于函數中的局部變量,每當調用一次函數,就會產生一個局部變量,而存在于函數中的靜態變量只在該函數第一次被調用時被初始化,然后,然后在內存只保有一份拷貝

補充

鏈接屬性分為三種:

???? 1. 內鏈接

???? 2. 外鏈接

內鏈接:

static修飾的函數和變量 和 const 修飾的變量(不包含extern)都是內鏈接,只能在本文件中使用,即使別的文件定義了相同的變量名也不要緊。

外鏈接:

沒有用static修飾的全局變量或者函數,都是可以作為外鏈接用extern修飾的全局變量或者函數,也是作為外部鏈接。還有一個 extern const int i = 1;這也是外部鏈接,因為extern的作用會覆蓋掉const使它成為外鏈接。

還有一類:局部變量,它的lifetime只是在函數執行期間,所以是沒有鏈接屬性的。

常成員函數是不能修改類中成員變量的,但是靜態成員變量是類變量,所以可以修改

#include <iostream>class Widget{ public: Widget(int i){  b = i; } void set() const; private: static int a; int b;};int Widget::a = 1;void Widget::set() const{ a++; //這是對的,因為是靜態成員變量是類變量 b++; //錯誤的,普通成員變量是不能被常函數改變的。   }

總結

其實這篇文章還有許多缺點。希望c++中的static修飾符示例詳解的內容對大家的學習或工作有一定的借鑒和學習價值,感謝大家繼續支持武林技術頻道!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区精品电影| 日本精品中文字幕| 91精品久久久久久| 久久久久久久久久婷婷| 九九久久综合网站| 亚洲天堂精品在线| 亚洲国产精品久久精品怡红院| 亚洲xxx自由成熟| 国产91精品视频在线观看| 久久91亚洲精品中文字幕奶水| 国产成人免费av电影| 91av国产在线| 91久久国产综合久久91精品网站| 久久免费成人精品视频| 久久久久久国产精品三级玉女聊斋| 久久人人爽人人爽人人片av高清| 国产亚洲精品日韩| 97精品国产91久久久久久| 久久69精品久久久久久久电影好| 日韩有码在线观看| 国产婷婷色综合av蜜臀av| 日本国产一区二区三区| 亚洲精品自产拍| 精品国产1区2区| 国产一区av在线| 欧美日韩中文字幕在线| 亚洲男人天天操| 国产精品男人爽免费视频1| 久久亚洲国产精品成人av秋霞| 欲色天天网综合久久| 欧美日韩国产综合视频在线观看中文| 亚洲欧美日韩高清| 日韩成人在线视频观看| 26uuu亚洲国产精品| 亚洲va电影大全| 亚洲性日韩精品一区二区| 亚洲成色www8888| 欧美精品成人91久久久久久久| 成人a视频在线观看| 欧美香蕉大胸在线视频观看| 国产网站欧美日韩免费精品在线观看| 国产网站欧美日韩免费精品在线观看| 色偷偷9999www| 久久久久久久亚洲精品| 国产午夜精品视频免费不卡69堂| 日韩av在线最新| 另类美女黄大片| 久久久伊人欧美| 激情久久av一区av二区av三区| 欧美极品美女视频网站在线观看免费| 欧美成人在线网站| 国产成人精品免高潮费视频| 欧美色道久久88综合亚洲精品| 久久亚洲精品一区二区| 九九热精品视频| 欧美日本啪啪无遮挡网站| 欧美老女人性视频| 九色精品免费永久在线| 亚洲视频自拍偷拍| 亚洲人成网站999久久久综合| 国产精品99久久久久久久久久久久| 91黄色8090| 午夜精品一区二区三区视频免费看| 亚洲男人天堂网| 日韩网站在线观看| 亚洲欧美日韩一区二区三区在线| 久久99青青精品免费观看| 日本午夜精品理论片a级appf发布| 欧美色视频日本高清在线观看| 国产小视频国产精品| 欧美性69xxxx肥| 欧洲日本亚洲国产区| 麻豆成人在线看| 精品人伦一区二区三区蜜桃免费| 精品国产老师黑色丝袜高跟鞋| 欧美视频中文字幕在线| 亚洲福利在线视频| 夜夜狂射影院欧美极品| 亚洲成**性毛茸茸| 日韩高清免费观看| 国产一区二区三区在线观看网站| 91九色综合久久| 精品久久久香蕉免费精品视频| 亚洲最大在线视频| 日韩免费看的电影电视剧大全| 久久九九亚洲综合| 欧美激情久久久久久| 最近2019中文免费高清视频观看www99| 久久久免费高清电视剧观看| 欧美午夜精品在线| 韩国国内大量揄拍精品视频| 欧美大秀在线观看| 久久视频免费在线播放| 国产日韩一区在线| 另类视频在线观看| 日本午夜精品理论片a级appf发布| 成人免费xxxxx在线观看| 亚洲一级一级97网| 在线日韩精品视频| 国模叶桐国产精品一区| 在线播放精品一区二区三区| 国产欧美精品在线| 欧美国产激情18| 91午夜在线播放| 午夜免费在线观看精品视频| 欧美激情在线有限公司| 亚洲视频自拍偷拍| 亚洲在线视频福利| 欧美野外猛男的大粗鳮| 色综合久久88| 国产精品日韩在线| 亚洲色图偷窥自拍| 欧美日韩亚洲系列| 欧美电影在线观看| 日韩av高清不卡| 国产成人精品999| 91精品国产高清久久久久久久久| 久久亚洲一区二区三区四区五区高| 亚洲精品电影在线观看| 亚洲国产精品免费| 97精品国产97久久久久久免费| 日韩欧美国产免费播放| 亚洲最大福利视频| 日韩精品中文字幕久久臀| 欧美一级免费看| 亚洲欧美日韩精品久久| 粗暴蹂躏中文一区二区三区| 国产精品久久久久9999| 亚洲欧美日韩一区二区三区在线| 97超级碰碰碰久久久| 国产精品劲爆视频| 国产香蕉精品视频一区二区三区| 欧美成人亚洲成人日韩成人| 中文字幕精品久久| 在线播放国产一区中文字幕剧情欧美| 国产精品国产三级国产aⅴ9色| 亚洲www永久成人夜色| 岛国av一区二区在线在线观看| 17婷婷久久www| 中文字幕日韩在线观看| 日本午夜人人精品| 欧美激情一区二区三区高清视频| 国产精品视频网站| 96精品视频在线| 日韩电视剧免费观看网站| 米奇精品一区二区三区在线观看| 欧美性猛交丰臀xxxxx网站| 国产在线视频91| 国产精品99久久99久久久二8| 亚洲小视频在线观看| 精品偷拍一区二区三区在线看| 国产精品丝袜一区二区三区| 久久好看免费视频| 国模极品一区二区三区| 国产精品视频白浆免费视频| 成人免费黄色网| 国产精品一区二区久久国产| 91亚洲国产精品| 国产精品老牛影院在线观看| 欧美日韩免费网站| 在线视频日本亚洲性| 日韩大陆欧美高清视频区| 亚洲女人被黑人巨大进入| 亚洲人午夜精品免费|