C++static關鍵字用法

來源:互聯網
上載者:User

標籤:使用   檔案   資料   c++   on   程式   sp   對象   

一、static的作用有三種:限制變數或函數範圍、保持變數內容的持久、預設初始化為0

1、被static關鍵字修飾的全域函數或者變數具有檔案範圍,即只在當前檔案中可見。

2、被static修飾的變數會被儲存在靜態儲存區,生命週期也為從定義直至程式結束。對於局部變數,即使在函數退出後該靜態變數依然存在,然而卻也無法訪問。此外,static修飾的變數一生只會被初始化一次(這點經常被用作面試的小題,需注意)。

3、正是因為被static修飾的變數會被儲存在靜態儲存區,所以才有了這個一條。因為靜態儲存區的變數會被預設初始化為0。

二、除此之外,static也可以修飾C++的類成員變數和類成員函數

1、類的靜態成員函數是屬於整個類而非類的對象,所以它沒有this指標,這就導致 了它僅能訪問類的待用資料和靜態成員函數。

2、靜態成員函數不含有this指標,所以可以作為回呼函數。但同時為了可以訪問類的成員變數可以將對象的this指標當做實參傳入回呼函數中。

3、靜態成員函數在類定義體外定義時不能加static關鍵字修飾,因為成員函數本是類範圍,而在類外用static修飾會將其作用於擴大為檔案範圍,所以是不合理的。

4、靜態成員變數並不像一般的成員變數在建構函式中初始化,而是在類的實現檔案中初始化,即必須在.cpp檔案中初始化,否則在程式連結時會出錯,重定義,且初始化時無需再使用static關鍵字修飾。

5、static修飾的const成員變數可以再類中被定義時初始化。

 

C++的文法太過繁雜,不能一下子說清楚。可能還有其他的一些規則,如果有,請留言給我,謝謝。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.