騰訊一面對 ArrayList 集合的面試問題,帶你通過源碼分析回答這些問題
1273
2022-05-30
1,非類成員的靜態變量
不是類成員的靜態變量有兩種:函數中的靜態局部變量和函數外的靜態全局變量。參考C語言存儲類別、存儲區一文,局部變量加static是函數結束之后,變量還在,全局變量加static是把作用域限制在本文件中。
2,作為類成員的靜態變量
類成員變量加static,就可以用類直接使用成員,不需要對象。
需要注意的是,靜態成員只是一個聲明,還需要在類外面定義這個成員。
class A {
public:
static int x;
};
int A::x = 10;
class B :public A {
};
class C :public A {
};
int main()
{
B::x = 3;
cout << C::x;
return 0;
}
輸出:3
表明所有的子類都和父類共享同一個靜態成員。
3,非類成員的靜態函數
類似于全局變量,加static是把作用域限制在本文件中,只有文件所在的編譯單位內可以使用這個函數。
4,作為類成員的靜態函數
非靜態的類成員函數,通過this指針確定訪問哪個對象實例的數據。
類成員函數加static之后,沒有this指針,調用時不會傳遞對象的引用,所以不能訪問非靜態的成員。
C++
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。