<b>閱讀目錄</b>
<a href="http://www.cnblogs.com/kaituorensheng/p/3236606.html#_label0">全局變量和全局靜态變量的差別</a>
靜态全局變量
<a></a>
特點
該變量在全局資料區配置設定記憶體
未經初始化的靜态全局變量會被程式自動初始化為0
靜态全局變量在聲明它的整個檔案都是可見的,而在檔案之外是不可見的
結果

1)全局變量是不顯式用static修飾的全局變量,但全局變量預設是動态的,作用域是整個工程,在一個檔案内定義的全局變量,在另一個檔案中,通過extern 全局變量名的聲明,就可以使用全局變量。
2)全局靜态變量是顯式用static修飾的全局變量,作用域是聲明此變量所在的檔案,其他的檔案即使用extern聲明也不能使用。
靜态局部變量
靜态局部變量在程式執行到該對象的聲明處時被首次初始化,即以後的函數調用不再進行初始化
靜态局部變量一般在聲明處初始化,如果沒有顯式初始化,會被程式自動初始化為0
它始終駐留在全局資料區,直到程式運作結束。但其作用域為局部作用域,當定義它的函數或語句塊結束時,其作用域随之結束

靜态函數
使用靜态函數好處
靜态函數不能被其它檔案所用
其它檔案中可以定義相同名字的函數,不會發生沖突
類中的靜态資料成員
靜态資料成員在程式中也隻有一份拷 貝,由所有對象共享(對于非靜态資料成員,每個類對象都有自己的拷貝)
靜态資料成員存儲在全局資料區。靜态資料成員定義時要配置設定空間,是以不能在類聲明中定義
靜态資料成員和普通資料成員一樣遵從public,protected,private通路規則
靜态資料成員初始化與一般資料成員初始化不同。靜态資料成員初始化的格式為:資料類型 類名::靜态資料成員名 =值
同全局變量相比,使用靜态資料成員有兩個優勢
靜态資料成員沒有進入程式的全局名字空間,是以不存在與程式中其它全局名字沖突的可能性
可以實作資訊隐藏。靜态資料成員可以是private成員,而全局變量不能
類中靜态成員函數
出現在類體外的函數定義不能指定關鍵字static
靜态成員之間可以互相通路,包括靜态成員函數通路靜态資料成員和通路靜态成員函數(不限制在類中成員)
非靜态成員函數可以任意地通路靜态成員函數和靜态資料成員
靜态成員函數不能通路非靜态成員函數和非靜态資料成員
this 是預設的(因為:靜态成員函數由于不是與任何的對象相聯系)
由于沒有this指針的額外開銷,是以靜态成員函數與類的全局函數相比速度上會有少許的增長
不能将靜态成員函數定義為虛函數
一個例子
繼承
本文轉自jihite部落格園部落格,原文連結:http://www.cnblogs.com/kaituorensheng/p/3236606.html,如需轉載請自行聯系原作者