tft每日頭條

 > 生活

 > static在c類中的用法

static在c類中的用法

生活 更新时间:2025-02-10 08:11:48

static在c類中的用法?const的作用:,下面我們就來聊聊關于static在c類中的用法?接下來我們就一起去了解一下吧!

static在c類中的用法(CC關鍵字static作用解析)1

static在c類中的用法

1、static修飾一般變量
  • 局部變量在局部變量之前加上關鍵字static,局部變量就被定義成為一個局部靜态變量。内存中的位置:靜态存儲區初始化:未經初始化的全局靜态變量會被程序自動初始化為0(自動對象的值是任意的,除非他被顯示初始化)作用域:作用域仍為局部作用域,當定義它的函數或者語句塊結束的時候,作用域随之結束。注:當static用來修飾局部變量的時候,它就改變了局部變量的存儲位置(從原來的棧中存放改為靜态存儲區)及其生命周期(局部靜态變量在離開作用域之後,并沒有被銷毀,而是仍然駐留在内存當中,直到程序結束,隻不過不能再對它進行訪問),但未改變其作用域。
  • 全局變量在全局變量之前加上關鍵字static,全局變量就被定義成為一個全局靜态變量。内存中的位置:靜态存儲區(靜态存儲區在整個程序運行期間都存在)初始化:未經初始化的全局靜态變量會被程序自動初始化為0(自動對象的值是任意的,除非它被顯示初始化)作用域:全局靜态變量在聲明他的文件之外是不可見的。準确地講從定義之處開始到文件結尾。注:static修飾全局變量,并為改變其存儲位置及生命周期,而是改變了其作用域,使當前文件外的源文件無法訪問該變量,好處如下:a、不會被其他文件所訪問和修改,b、其他文件中可以使用相同名字的變量,不會發生沖突。對全局函數也是有隐藏作用。
2、static修飾類中成員變量和成員函數
  • 成員變量用static修飾類的數據成員實際使其成為類的全局變量,會被類的所有對象共享,包括派生類的對象。因此,static成員必須在類外進行初始化,而不能在構造函數内進行初始化,不過也可以用const修飾static數據成員在類内初始化 。不要在頭文件中定義(初始化)靜态數據成員,會引起重複定義的錯誤。靜态數據成員可以成為成員函數的可選參數,而普通數據成員則不可以。靜态數據成員的類型可以是所屬類的類型,而普通數據成員則不可以。普通數據成員的類型隻能聲明為所屬類類型的指針或引用。
  • 成員函數用static修飾成員函數,使這個類隻存在這一份函數,所有對象共享該函數,不含this指針。靜态成員函數是可以獨立訪問的,也就是說,無須創建任何對象實例就可以訪問。靜态成員函數在類外定義時不需要加static修飾符。在靜态成員函數的實現中不能直接引用類中說明的非靜态成員,可以引用類中說明的靜态成員,因為靜态成員函數不含this指針。注:不可以同時用const和static修飾成員函數。C 編譯器在實現const的成員函數的時候為了确保該函數不能修改類的實例的狀态,會在函數中添加一個隐式的參數const this* 指針。但當一個成員為static的時候,該函數是沒有this指針的,也就是說此時const的用法和static是沖突的。static的作用是表示該函數隻作用在類型的靜态變量上,與類的實例沒有關系;而const的作用是确保函數不能修改類的實例的狀态,與類型的靜态變量沒有關系。因此不能同時用它們。

const的作用:

  • 限定變量為不可修改。
  • 限定成員函數不可以修改任何數據成員。
,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved