青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0

static關鍵字的用法

static c++中很常用的修飾符,它被用來控制變量的存儲方式和可見性,下面我將從 static 修飾符的產(chǎn)生原因、作用談起,全面分析static 修飾符的實質(zhì)。

static 的兩大作用:

一、控制存儲方式:static被引入以告知編譯器,將變量存儲在程序的靜態(tài)存儲區(qū)而非棧上空間。1、引出原因:函數(shù)內(nèi)部定義的變量,在程序執(zhí)行到它的定義處時,編譯器為它在棧上分配空間,大家知道,函數(shù)在棧上分配的空間在此函數(shù)執(zhí)行結束時會釋放掉,這樣就產(chǎn)生了一個問題: 如果想將函數(shù)中此變量的值保存至下一次調(diào)用時,如何實現(xiàn)?最容易想到的方法是定義一個全局的變量,但定義為一個全局變量有許多缺點,最明顯的缺點是破壞了此變量的訪問范圍(使得在此函數(shù)中定義的變量,不僅僅受此函數(shù)控制)。2 解決方案:因此c++ 中引入了static,用它來修飾變量,它能夠指示編譯器將此變量在程序的靜態(tài)存儲區(qū)分配空間保存,這樣即實現(xiàn)了目的,又使得此變量的存取范圍不變。

二、控制可見性與連接類型 :static還有一個作用,它會把變量的可見范圍限制在編譯單元中,使它成為一個內(nèi)部連接,這時,它的反義詞為”extern”.static作用分析總結:static總是使得變量或?qū)ο蟮拇鎯π问阶兂伸o態(tài)存儲,連接方式變成內(nèi)部連接,對于局部變量(已經(jīng)是內(nèi)部連接了),它僅改變其存儲方式;對于全局變量(已經(jīng)是靜態(tài)存儲了),它僅改變其連接類型。

 

類中的static成員:
一、出現(xiàn)原因及作用:
1
、需要在一個類的各個對象間交互,即需要一個數(shù)據(jù)對象為整個類而非某個對象服務。

2、同時又力求不破壞類的封裝性,即要求此成員隱藏在類的內(nèi)部,對外不可見。

類的static成員滿足了上述的要求,因為它具有如下特征:有獨立的存儲區(qū),屬于整個類。
二、注意:
1
、對于靜態(tài)的數(shù)據(jù)成員,連接器會保證它擁有一個單一的外部定義。靜態(tài)數(shù)據(jù)成員按定義出現(xiàn)的先后順序依次初始化,注意靜態(tài)成員嵌套時,要保證所嵌套的成員已經(jīng)初始化了。消除時的順序是初始化的反順序。
2
類的靜態(tài)成員函數(shù)是屬于整個類而非類的對象,所以它沒有this指針,這就導致了它僅能訪問類的靜態(tài)數(shù)據(jù)和靜態(tài)成員函數(shù)。

 

如下是對靜態(tài)關鍵字的一些說明。

1靜態(tài)全局變量
定義:在全局變量前,加上關鍵字 static 該變量就被定義成為了一個靜態(tài)全局變量。
特點:
  A
、該變量在全局數(shù)據(jù)區(qū)分配內(nèi)存。
  B
、初始化:如果不顯式初始化,那么將被隱式初始化為0
  C
、訪變量只在本源文件可見,嚴格的講應該為定義之處開始到本文件結束。

 
例(摘于C++程序設計教程---錢能主編P103):
        //file1.cpp
        #include<iostream.h>
        void fn();
        extern int n;
        void main()
        {
          n=20;
          cout << n << endl;
          fn();
        }

        //file2.cpp
        #include<iostream.h>

        static int n; //
定義靜態(tài)全局變量,初始化為0
        void fn()
        {
          n++;
          cout << n << endl;
        }

 
文件分別編譯能通過,但連接時file1.cpp 中的變量n找不到定義,產(chǎn)生連接錯誤。

  D
文件作用域下聲明的const的常量默認為static存儲類型。
2
、靜態(tài)局部變量
定義:在局部變量前加上static關鍵字時,就定義了靜態(tài)局部變量。
特點:
  A
、該變量在全局數(shù)據(jù)區(qū)分配內(nèi)存。
  B
、初始化:如果不顯式初始化,那么將被隱式初始化為0
  C
、它始終駐留在全局數(shù)據(jù)區(qū),直到程序運行結束。但其作用域為局部作用域,當定義它的函數(shù)或 語句塊結束時,其作用域隨之結束。
3
、靜態(tài)函數(shù)(注意與類的靜態(tài)成員函數(shù)區(qū)別)
定義:在函數(shù)的返回類型前加上static關鍵字,函數(shù)即被定義成靜態(tài)函數(shù)。
特點:
  A
、靜態(tài)函數(shù)只能在本源文件中使用(這是與普通函數(shù)區(qū)別)
 
例(摘于C++程序設計教程---錢能主編P103):
        //file1.cpp
        void fn();
        void staticFn()

        void main()
        {

          fn();
          staticFn();
        }

        //file2.cpp
        #include<iostream.h>

        static void staticFn();
        void fn();

        void fn()
        {
          staticFn();
          cout << "this is fn() \n";
        }

        void staticFn()
        {
          cout << "this is staticFn() \n";
        }
連接時,將產(chǎn)生找不到函數(shù)staticFn()定義的錯誤。

  B
、主意事項
 
在文件作用域下聲明的inline函數(shù)默認為static類型。
二、面象對象中的static關鍵字(主要指類中的static關鍵字)

1
、靜態(tài)數(shù)據(jù)成員
特點:
  A
、內(nèi)存分配:在程序的全局數(shù)據(jù)區(qū)分配。
  B
、初始化和定義:
   a
、靜態(tài)數(shù)據(jù)成員定義時要分配空間,所以不能在類聲明中定義。
   b
、為了避免在多個使用該類的源文件中,對其重復定義,所在,不能在類的頭文件中定義。
   c
、靜態(tài)數(shù)據(jù)成員因為程序一開始運行就必需存在,所以其初始化的最佳位置在類的內(nèi)部實現(xiàn)。
  C
、特點
   a
、對相于 public,protected,private 關鍵字的影響它和普通數(shù)據(jù)成員一樣,
   b
、因為其空間在全局數(shù)據(jù)區(qū)分配,屬于所有本類的對象共享,所以,它不屬于特定的類對象,在沒產(chǎn)生類對象時其作用域就可見,即在沒有產(chǎn)生類的實例時,我們就可以操作它。
  D
、訪問形式
   a
類對象名.靜態(tài)數(shù)據(jù)成員名
   b
類類型名:: 靜態(tài)數(shù)據(jù)成員名
  E
、靜態(tài)數(shù)據(jù)成員,主要用在類的所有實例都擁有的屬性上。比如,對于一個存款類,帳號相對   于每個實例都是不同的,但每個實例的利息是相同的。所 以,應該把利息設為存款類的靜態(tài)數(shù)據(jù)成員。這有兩個好處,第一,不管定義多少個存款類對象,利息數(shù)據(jù)成員都共享分配在全局區(qū)的內(nèi)存,所以節(jié)省存貯空間。第 二,一旦利息需要改變時,只要改變一次,則所有存款類對象的利息全改變過來了,因為它們實際上是共用一個東西。
2
、靜態(tài)成員函數(shù)
特點:
  A
、靜態(tài)成員函數(shù)與類相聯(lián)系,不與類的對象相聯(lián)系。
  B
、靜態(tài)成員函數(shù)不能訪問非靜態(tài)數(shù)據(jù)成員。原因很簡單,非靜態(tài)數(shù)據(jù)成員屬于特定的類實例。
作用:
 
主要用于對靜態(tài)數(shù)據(jù)成員的操作。
調(diào)用形式:
  A
、類對象名.靜態(tài)成員函數(shù)名()
  B
、類類型名:: 靜態(tài)成員函數(shù)名() 

posted on 2009-03-27 10:36 chatler 閱讀(272) 評論(0)  編輯 收藏 引用 所屬分類: C++_BASIS
<2009年12月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩日本国产亚洲在线| 亚洲图中文字幕| 一区二区三区视频在线| 黄色亚洲网站| 亚洲女ⅴideoshd黑人| 亚洲精品一区在线观看香蕉| 久久国产加勒比精品无码| 亚洲已满18点击进入久久| 欧美激情一区二区三区四区| 你懂的视频一区二区| 国产亚洲综合精品| 亚洲欧美日韩国产成人| 亚洲网站视频| 欧美日产国产成人免费图片| 亚洲国产一区在线| 亚洲国产精品va在线看黑人| 久久一区二区三区国产精品| 久久亚洲美女| 一区二区视频欧美| 久久久999| 免费在线国产精品| 亚洲成色最大综合在线| 久久久.com| 欧美电影在线观看完整版| 亚洲第一毛片| 免费永久网站黄欧美| 亚洲国产毛片完整版| 亚洲伦理久久| 欧美天天视频| 中文日韩在线| 久久国产毛片| 亚洲高清三级视频| 欧美精品一区视频| 99精品久久| 欧美在线高清视频| 黄色精品一二区| 美女日韩欧美| 日韩视频免费观看| 欧美一区二区日韩一区二区| 国产日韩欧美| 蜜臀av在线播放一区二区三区| 亚洲高清久久| 亚洲欧美变态国产另类| 国产亚洲精品久久久| 久久久久久精| 亚洲精品国偷自产在线99热| 亚洲欧美日韩在线| 激情欧美一区二区| 欧美日本精品| 亚洲欧美日韩国产另类专区| 久久视频精品在线| av成人免费在线| 国产欧美在线视频| 蜜臀av国产精品久久久久| 亚洲精品美女在线观看| 欧美一区二区视频97| 亚洲黄色av| 国产精品久久久久久久久久久久久久 | 欧美自拍丝袜亚洲| 亚洲动漫精品| 国产精品另类一区| 久热这里只精品99re8久| 99re66热这里只有精品4| 久久久夜夜夜| 亚洲一区自拍| 亚洲国产欧美一区二区三区丁香婷| 欧美久久久久久蜜桃| 午夜欧美不卡精品aaaaa| 91久久香蕉国产日韩欧美9色| 亚洲欧美影音先锋| 日韩一级精品| 樱桃成人精品视频在线播放| 欧美日韩三级视频| 久久夜色精品国产| 亚洲欧美日韩综合aⅴ视频| 欧美激情欧美狂野欧美精品| 欧美一区2区三区4区公司二百| 亚洲欧洲精品一区二区三区| 国产亚洲精品成人av久久ww| 欧美性猛交xxxx乱大交蜜桃| 美女999久久久精品视频| 香蕉久久a毛片| 一区二区三区福利| 亚洲人成啪啪网站| 欧美成人黑人xx视频免费观看| 午夜天堂精品久久久久| 亚洲天堂视频在线观看| 亚洲国内自拍| 亚洲高清成人| 在线欧美福利| 黄色成人在线网站| 国产欧美精品日韩精品| 国产精品久久久久久一区二区三区| 欧美劲爆第一页| 欧美gay视频激情| 久久亚洲影音av资源网| 久久精品二区亚洲w码| 午夜日本精品| 亚洲免费小视频| 亚洲在线1234| 亚洲一区二区三区视频| 在线亚洲电影| 亚洲在线免费观看| 亚洲一区欧美二区| 亚洲免费一区二区| 亚洲欧美国产另类| 性欧美18~19sex高清播放| 亚洲欧美精品在线| 欧美亚洲一区| 久久精品国产一区二区三区| 久久国产精品网站| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲福利视频网| 亚洲国产日韩欧美在线动漫| 亚洲国产老妈| 亚洲免费高清| 亚洲午夜在线观看视频在线| 亚洲在线第一页| 欧美一区二区在线观看| 久久久久久免费| 欧美不卡视频一区发布| 欧美日韩国产精品自在自线| 欧美午夜一区二区| 国产免费观看久久黄| 国产一区视频在线看| 亚洲高清视频的网址| 一本色道久久综合| 亚洲欧美一区二区在线观看| 久久久www免费人成黑人精品| 美国成人直播| 亚洲日本中文字幕| 亚洲一区制服诱惑| 久久久青草青青国产亚洲免观| 欧美成人嫩草网站| 国产精品久久久久久久久久妞妞 | 久久中文精品| 亚洲国产一区二区三区a毛片| 中日韩高清电影网| 久久精品成人欧美大片古装| 欧美高清一区| 国产日韩av一区二区| 在线观看中文字幕不卡| aa日韩免费精品视频一| 久久精品在线视频| 亚洲激情小视频| 亚洲影院高清在线| 美女久久网站| 国产麻豆91精品| 最新国产乱人伦偷精品免费网站| 亚洲午夜国产成人av电影男同| 久久久亚洲精品一区二区三区| 亚洲欧洲在线看| 久久久99免费视频| 国产精品久久久久影院亚瑟| 亚洲福利视频免费观看| 午夜精品一区二区三区在线播放| 免费观看一区| 午夜免费久久久久| 欧美视频一区在线观看| 亚洲国产成人高清精品| 性xx色xx综合久久久xx| 亚洲欧洲一区二区三区在线观看| 欧美诱惑福利视频| 国产精品美女诱惑| 亚洲伦理自拍| 欧美成人日本| 久久精品欧美日韩| 国产精品综合网站| 亚洲午夜视频在线观看| 亚洲丰满少妇videoshd| 久久久久久黄| 国产在线精品成人一区二区三区| 亚洲免费视频成人| 99视频精品免费观看| 欧美成人午夜激情视频| 亚洲第一区在线观看| 久久久久久亚洲综合影院红桃 | 欧美私人啪啪vps| 99精品国产热久久91蜜凸| 欧美国产日韩视频| 久久免费少妇高潮久久精品99| 国产日韩欧美精品| 欧美在线视频不卡| 亚洲自拍偷拍一区| 国产精品素人视频| 午夜精品久久久久久久蜜桃app| 夜夜嗨av一区二区三区网站四季av | 亚洲免费福利视频| 欧美日韩免费高清| 中国成人亚色综合网站| 亚洲精品中文字幕有码专区| 欧美成人一区二区三区| 亚洲精选在线观看| 亚洲精品老司机| 欧美日韩国产综合视频在线观看中文 | 性欧美精品高清| 国产午夜亚洲精品羞羞网站| 久久久国产成人精品| 久久精品欧美| 亚洲国产mv|