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

posts - 297,  comments - 15,  trackbacks - 0

static關(guān)鍵字的用法

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

static 的兩大作用:

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

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

 

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

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指針,這就導(dǎo)致了它僅能訪問類的靜態(tài)數(shù)據(jù)和靜態(tài)成員函數(shù)。

 

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

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

 
例(摘于C++程序設(shè)計教程---錢能主編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的常量默認(rèn)為static存儲類型。
2
、靜態(tài)局部變量
定義:在局部變量前加上static關(guān)鍵字時,就定義了靜態(tài)局部變量。
特點:
  A
、該變量在全局?jǐn)?shù)據(jù)區(qū)分配內(nèi)存。
  B
、初始化:如果不顯式初始化,那么將被隱式初始化為0
  C
、它始終駐留在全局?jǐn)?shù)據(jù)區(qū),直到程序運行結(jié)束。但其作用域為局部作用域,當(dāng)定義它的函數(shù)或 語句塊結(jié)束時,其作用域隨之結(jié)束。
3
、靜態(tài)函數(shù)(注意與類的靜態(tài)成員函數(shù)區(qū)別)
定義:在函數(shù)的返回類型前加上static關(guān)鍵字,函數(shù)即被定義成靜態(tài)函數(shù)。
特點:
  A
、靜態(tài)函數(shù)只能在本源文件中使用(這是與普通函數(shù)區(qū)別)
 
例(摘于C++程序設(shè)計教程---錢能主編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ù)默認(rèn)為static類型。
二、面象對象中的static關(guān)鍵字(主要指類中的static關(guān)鍵字)

1
、靜態(tài)數(shù)據(jù)成員
特點:
  A
、內(nèi)存分配:在程序的全局?jǐn)?shù)據(jù)區(qū)分配。
  B
、初始化和定義:
   a
、靜態(tài)數(shù)據(jù)成員定義時要分配空間,所以不能在類聲明中定義。
   b
、為了避免在多個使用該類的源文件中,對其重復(fù)定義,所在,不能在類的頭文件中定義。
   c
、靜態(tài)數(shù)據(jù)成員因為程序一開始運行就必需存在,所以其初始化的最佳位置在類的內(nèi)部實現(xiàn)。
  C
、特點
   a
、對相于 public,protected,private 關(guān)鍵字的影響它和普通數(shù)據(jù)成員一樣,
   b
、因為其空間在全局?jǐn)?shù)據(jù)區(qū)分配,屬于所有本類的對象共享,所以,它不屬于特定的類對象,在沒產(chǎn)生類對象時其作用域就可見,即在沒有產(chǎn)生類的實例時,我們就可以操作它。
  D
、訪問形式
   a
類對象名.靜態(tài)數(shù)據(jù)成員名
   b
類類型名:: 靜態(tài)數(shù)據(jù)成員名
  E
、靜態(tài)數(shù)據(jù)成員,主要用在類的所有實例都擁有的屬性上。比如,對于一個存款類,帳號相對   于每個實例都是不同的,但每個實例的利息是相同的。所 以,應(yīng)該把利息設(shè)為存款類的靜態(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
<2010年11月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

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

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>
            激情av一区二区| 欧美日韩成人综合在线一区二区| 99re成人精品视频| 久久久综合香蕉尹人综合网| 亚洲视频福利| 亚洲美女视频在线观看| 国模私拍视频一区| 欧美午夜精品伦理| 欧美大学生性色视频| 久久动漫亚洲| 午夜精品区一区二区三| 亚洲美女视频在线观看| 亚洲二区视频在线| 老鸭窝毛片一区二区三区| 欧美一级专区| 亚洲男女自偷自拍图片另类| 99视频精品全部免费在线| 亚洲激情av在线| 一区二区视频在线观看| 国内精品写真在线观看| 国产日韩在线一区二区三区| 国产精品日韩电影| 国产精品视频免费观看www| 欧美视频在线观看一区| 欧美日韩一区视频| 欧美日韩视频一区二区三区| 国内免费精品永久在线视频| 欧美调教视频| 欧美日韩午夜激情| 欧美日韩精品免费观看视频| 欧美精品少妇一区二区三区| 欧美电影免费观看高清完整版| 免费亚洲电影在线观看| 免费h精品视频在线播放| 美女露胸一区二区三区| 麻豆精品在线视频| 欧美成人精品影院| 欧美精品免费看| 欧美日韩高清免费| 国产精品久久久久秋霞鲁丝| 国产精品免费看片| 国产毛片一区二区| 国模大胆一区二区三区| 影音先锋国产精品| 91久久精品一区二区别| 日韩视频一区二区三区| 亚洲天堂第二页| 先锋亚洲精品| 久久午夜精品一区二区| 欧美高清影院| 亚洲美女毛片| 亚洲一区二区三区四区中文 | 狠狠色伊人亚洲综合网站色| 国产在线观看91精品一区| 在线欧美日韩精品| 亚洲蜜桃精久久久久久久| 亚洲一区二区三区在线| 欧美一区二区三区免费在线看| 久久久精品国产99久久精品芒果| 免费日韩av电影| 日韩一区二区电影网| 午夜精品福利视频| 另类专区欧美制服同性| 欧美视频在线一区| 国产在线拍偷自揄拍精品| 亚洲人成艺术| 欧美一级欧美一级在线播放| 欧美 日韩 国产 一区| 亚洲精品日韩综合观看成人91 | 欧美精品一区在线发布| 国产精品久久久一区二区| 曰韩精品一区二区| 在线综合亚洲欧美在线视频| 久久久国产一区二区| 亚洲国产欧美一区二区三区同亚洲 | 亚洲在线观看视频网站| 噜噜噜91成人网| 国产精品国产精品| 精品二区视频| 亚洲欧美日韩国产另类专区| 美女爽到呻吟久久久久| 一区二区三区高清在线观看| 久久久久久日产精品| 欧美午夜在线观看| 136国产福利精品导航网址| 亚洲一区二区三区精品在线观看 | 国产一区二区三区的电影 | 欧美一区午夜精品| 亚洲国产二区| 欧美在线资源| 欧美丝袜一区二区三区| 在线观看日韩av先锋影音电影院 | 亚洲成人资源| 欧美一区二区三区日韩| 欧美日韩一区二区三区在线| 亚洲国产岛国毛片在线| 久久成人精品视频| 亚洲伦理一区| 美日韩在线观看| 国产午夜亚洲精品不卡| 亚洲午夜在线观看视频在线| 欧美风情在线| 久久精品99国产精品酒店日本| 国产精品第13页| 亚洲精品一区二区三区99| 久久免费视频观看| 亚洲一区在线观看免费观看电影高清| 欧美成人午夜免费视在线看片| 国内成+人亚洲| 性18欧美另类| 亚洲视频在线观看一区| 欧美日韩在线观看视频| 亚洲乱码视频| 欧美激情小视频| 久久一区二区三区国产精品| 韩日欧美一区二区| 久久er精品视频| 亚洲一区在线免费| 国产精品男女猛烈高潮激情| 亚洲网站在线观看| 亚洲靠逼com| 欧美日韩精品不卡| 99精品久久免费看蜜臀剧情介绍| 亚洲第一在线| 男女精品视频| 亚洲精品国产精品国自产观看浪潮| 毛片基地黄久久久久久天堂| 久久精品夜色噜噜亚洲a∨| 国产一区二区三区四区三区四| 久久成人18免费网站| 亚洲综合日韩在线| 国产日韩欧美一区二区| 久久九九热re6这里有精品| 欧美亚洲在线| 狠狠88综合久久久久综合网| 久久亚洲精品欧美| 久久一二三区| 亚洲人成在线观看| 亚洲激情在线播放| 欧美日韩亚洲激情| 午夜精品影院在线观看| 午夜日本精品| 在线不卡中文字幕| 亚洲国产精品久久久久婷婷884| 欧美极品欧美精品欧美视频| 在线视频你懂得一区| 亚洲性感美女99在线| 国产亚洲电影| 欧美成年网站| 欧美日韩裸体免费视频| 亚洲欧美伊人| 久久精品女人的天堂av| 亚洲国产视频一区| 99国产精品久久久久久久久久| 国产精品露脸自拍| 久久三级视频| 欧美激情精品久久久六区热门| 国产精品99久久久久久人| 亚洲综合精品四区| 在线日韩电影| 日韩亚洲欧美一区| 国产日产亚洲精品| 亚洲福利国产| 国产精品拍天天在线| 久久午夜精品一区二区| 欧美精品一区二区三区久久久竹菊 | 国产精品久久九九| 久久久久久久999精品视频| 裸体歌舞表演一区二区| 亚洲图片在线| 久久久国产一区二区三区| 99re在线精品| 久久国产精品亚洲va麻豆| 一区二区精品| 久久久久久国产精品mv| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产精品亚洲综合色区韩国| 欧美sm重口味系列视频在线观看| 欧美三级不卡| 欧美/亚洲一区| 国产精品自拍网站| 91久久精品久久国产性色也91| 国产欧美精品va在线观看| 91久久在线播放| 狠狠色综合网站久久久久久久| 99亚洲伊人久久精品影院红桃| 永久免费毛片在线播放不卡| 一本色道久久综合| 亚洲激情成人| 欧美亚洲视频| 亚洲永久免费| 欧美国产一区二区在线观看| 久久久亚洲影院你懂的| 国产精品国产福利国产秒拍| 亚洲高清资源| 在线成人激情视频| 欧美一区不卡| 香蕉乱码成人久久天堂爱免费| 欧美巨乳在线观看| 欧美成人高清视频|