<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Y_H_T

      導航

      靜態變量和非靜態變量

      常量必須在構造函數的初始化列表里面初始化或者將其設置為static。
      如:(錯誤的類聲明)
      class A
      {
          const int Size = 0;
      }
       
      正確的程序如下:
      class A
      {
          A()
          {
              const int Size = 0;
          }
      }
      或者:
      class A()
      {
          static const int Size = 0;
      }

       

       

      數據成員可以分靜態變量、非靜態變量兩種

      靜態成員:靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名+靜態成員名訪問此靜態成員,因為靜態成員存在于內存,非靜態成員需要實例化才會分配內存,所以靜態成員不能訪問非靜態的成員..因為靜態成員存在于內存,所以非靜態成員可以直接訪問類中靜態的成員

       

      非成靜態員:所有沒有加Static的成員都是非靜態成員,當類被實例化之后,可以通過實例化的類名進行訪問..非靜態成員的生存期決定于該類的生存期..而靜態成員則不存在生存期的概念,因為靜態成員始終駐留在內容中.. 

       

      一個類中也可以包含靜態成員和非靜態成員,類中也包括靜態構造函數和非靜態構造函數.. 

       

      分兩個方面來總結,第一方面主要是相對于面向過程而言,即在這方面不涉及到類,第二方面相對于面向對象而言,主要說明static在類中的作用。 

       

       

       

      一、在面向過程設計中的static關鍵字 

       

      1、靜態全局變量 

       

      定義:在全局變量前,加上關鍵字 static 該變量就被定義成為了一個靜態全局變量。 

       

      特點: 

       

        A、該變量在全局數據區分配內存。 

       

        B、初始化:如果不顯式初始化,那么將被隱式初始化為0(自動變量是隨機的,除非顯式地初始化)。 

       

        C、訪變量只在本源文件可見,嚴格的講應該為定義之處開始到本文件結束。 

       

          D、文件作用域下聲明的const的常量默認為static存儲類型。 

       

      靜態變量都在全局數據區分配內存,包括后面將要提到的靜態局部變量。對于一個完整的程序,在內存中的分布情況如下圖: 

       

        代碼區 

       

      全局數據區 

       

      堆區 

       

      棧區 (堆棧區)

       

        一般程序的new產生的動態數據存放在堆區,函數內部的自動變量存放在棧區。自動變量一般會隨著函數的退出而釋放空間,靜態數據(即使是函數內部的靜態局部變量)也存放在全局數據區。全局數據區的數據并不會因為函數的退出而釋放空間。

       

       通常,在函數體內定義了一個變量,每當程序運行到該語句時都會給該局部變量分配棧內存。但隨著程序退出函數體,系統就會收回棧內存,局部變量也相應失效。 

       

        但有時候我們需要在兩次調用之間對變量的值進行保存。通常的想法是定義一個全局變量來實現。但這樣一來,變量已經不再屬于函數本身了,不再僅受函數的控制,給程序的維護帶來不便。 

       

        靜態局部變量正好可以解決這個問題。靜態局部變量保存在全局數據區,而不是保存在棧中,每次的值保持到下一次調用,直到下次賦新值。 

       

      特點: 

       

        A、該變量在全局數據區分配內存。 

       

        B、初始化:如果不顯式初始化,那么將被隱式初始化為0,以后的函數調用不再進行初始化。 

       

        C、它始終駐留在全局數據區,直到程序運行結束。但其作用域為局部作用域,當定義它的函數或 語句塊結束時,其作用域隨之結束。

      2、靜態函數(注意與類的靜態成員函數區別) 定義:在函數的返回類型前加上static關鍵字,函數即被定義成靜態函數。 特點:   A、靜態函數與普通函數不同,它只能在聲明它的文件當中可見,不能被其它文件使用。 

       

       

       

      二、面向對象的static關鍵字(類中的static關鍵字) 

       

      1、靜態數據成員 

       

      在類內數據成員的聲明前加上關鍵字static,該數據成員就是類內的靜態數據成員。

       

      靜態數據成員有以下特點: 

       

      對于非靜態數據成員,每個類對象都有自己的拷貝。而靜態數據成員被當作是類的成員。無論這個類的對象被定義了多少個,靜態數據成員在程序中也只有一份拷貝,由該類型的所有對象共享訪問。也就是說,靜態數據成員是該類的所有對象所共有的。對該類的多個對象來說,靜態數據成員只分配一次內存,供所有對象共用。所以,靜態數據成員的值對每個對象都是一樣的,它的值可以更新; 

       

      靜態數據成員存儲在全局數據區。靜態數據成員定義時要分配空間,所以不能在類聲明中定義。

       

      靜態數據成員和普通數據成員一樣遵從public,protected,private訪問規則; 

       

      因為靜態數據成員在全局數據區分配內存,屬于本類的所有對象共享,所以,它不屬于特定的類對象,在沒有產生類對象時其作用域就可見,即在沒有產生類的實例時,我們就可以操作它; 

       

      靜態數據成員初始化與一般數據成員初始化不同。靜態數據成員初始化的格式為: 

       

      <數據類型><類名>::<靜態數據成員名>=<值> 

       

      類的靜態數據成員有兩種訪問形式: 

       

      <類對象名>.<靜態數據成員名> 或 <類類型名>::<靜態數據成員名> 

       

      如果靜態數據成員的訪問權限允許的話(即public的成員),可在程序中,按上述格式來引用靜態數據成員 ; 

       

      靜態數據成員主要用在各個對象都有相同的某項屬性的時候。比如對于一個存款類,每個實例的利息都是相同的。所以,應該把利息設為存款類的靜態數據成員。這有兩個好處,第一,不管定義多少個存款類對象,利息數據成員都共享分配在全局數據區的內存,所以節省存儲空間。第二,一旦利息需要改變時,只要改變一次,則所有存款類對象的利息全改變過來了; 

       

      同全局變量相比,使用靜態數據成員有兩個優勢: 

       

      靜態數據成員沒有進入程序的全局名字空間,因此不存在與程序中其它全局名字沖突的可能性; 

       

      可以實現信息隱藏。靜態數據成員可以是private成員,而全局變量不能; 

       

      2、靜態成員函數 

       

        與靜態數據成員一樣,我們也可以創建一個靜態成員函數,它為類的全部服務而不是為某一個類的具體對象服務。靜態成員函數與靜態數據成員一樣,都是類的內部實現,屬于類定義的一部分。普通的成員函數一般都隱含了一個this指針,this指針指向類的對象本身,因為普通成員函數總是具體的屬于某個類的具體對象的。通常情況下,this是缺省的。如函數fn()實際上是this->fn()。但是與普通函數相比,靜態成員函數由于不是與任何的對象相聯系,因此它不具有this指針。從這個意義上講,它無法訪問屬于類對象的非靜態數據成員,也無法訪問非靜態成員函數,它只能調用其余的靜態成員函數。

       

       

      關于靜態成員函數,可以總結為以下幾點: 

       

      出現在類體外的函數定義不能指定關鍵字static; 

       

      靜態成員之間可以相互訪問,包括靜態成員函數訪問靜態數據成員和訪問靜態成員函數; 

       

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

       

      靜態成員函數不能訪問非靜態成員函數和非靜態數據成員; 

       

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

       

      調用靜態成員函數,可以用成員訪問操作符(.)(->)為一個類的對象或指向類對象的指針調用靜態成員函數

      posted on 2013-11-01 12:19  Y_H_T  閱讀(422)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 高颜值午夜福利在线观看| 午夜免费无码福利视频麻豆| 九九热精彩视频在线免费| 欧美大胆老熟妇乱子伦视频| 亚洲欧美日韩一区在线观看| 婷婷精品国产亚洲av在线观看| 猫咪www免费人成网站| 中文字幕一区有码视三区| 久久精品国产熟女亚洲av| 秋霞在线观看片无码免费不卡| 美女一区二区三区在线观看视频| 亚洲色最新高清AV网站| 久久久综合九色合综| 自拍视频在线观看成人| 成人国产亚洲精品一区二区| 国产一二三区在线| 国产永久免费高清在线| 天天摸天天碰天天添| h无码精品3d动漫在线观看| 国产成人无码久久久精品一| 女同在线观看亚洲国产精品| 精品一卡2卡三卡4卡乱码精品视频| 中年国产丰满熟女乱子正在播放 | 92自拍视频爽啪在线观看| 在线精品国产中文字幕| 十八禁在线观看视频播放免费 | 一本大道久久香蕉成人网| 国产明星精品无码AV换脸| 全国最大成人网| 99热久久这里只有精品| 亚洲欧美自偷自拍视频图片| 重庆市| 欧美人与性囗牲恔配| 777奇米四色成人影视色区| 男受被做哭激烈娇喘gv视频| 国产亚洲精品黑人粗大精选| 亚洲精品无码日韩国产不卡av| 视频一区视频二区在线视频| 日本一区二区三区在线播放| 亚洲成av一区二区三区| 香港日本三级亚洲三级|