关键字static在C和C++中的区别
首先,C++是C的超集,所以static在C中的用法 對于C++來說是全盤接受的,而兩者的不同也就是C++中多出來的特性,而這些多出來的特性與C++面向對象的特性有關,或更具體的說,就是static在“類”中的意義和作用。
1:C語言中的Static使用:
?
1.1 ?C中static變量 的影響其實不在作用域而在于 其“存儲方式”:
??即在函數內定義的static變量,其作用域仍然在函數內;在函數外定義的static變量,其作用域也在函數外,屬于變量所在的文件的作用域。
static 的靜態存儲方式使得:同一函數的所有static變量的“副本”都共用一個該變量。所以使用了static變量的函數一般是“不可再入”的,不是“線程安全”的。
?
1.2 ?C中static函數 的作用:
C中static函數還有另外一個名字,叫:內部函數。從名字也可看出,C中的static函數的定義將函數“局部化”,使其訪問權限被限制在當前文件內部,這實際上說明的是一種“代碼的隱藏機制”,通過和extern函數(外部函數)的聯合使用,可以實現C語言中函數的模塊化設計,這有點類似與C++ 中的Public和private關鍵字的味道。 ?當然,如果在C中,函數默認的訪問權限是extern的,所以關鍵字extern往往省略不寫。
?
2: C++類中定義的Static變量和函數
?
其實本質上與C中的情況一致,不在于作用域(還是類的作用域),而在于其“存儲方式”決定了Static變量將與類存儲在一起(因為類本身在內存中有其原型的內存空間),而類的實例將共享這一static變量,所以static變量也不是“線程安全”的。
而static成員函數的設置,主要是為了訪問靜態變量,或者完成某些獨立于類實例的功能。
轉載于:https://www.cnblogs.com/10jschen/archive/2012/09/22/2698139.html
總結
以上是生活随笔為你收集整理的关键字static在C和C++中的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ 虚函数和纯虚函数
- 下一篇: EntityModelStudio系列教