excel表如何根據顏色排序(excel表如何按照顏色排序)
790
2025-04-03
先說一下C語言中的static,然后接著說C++中的static。
C語言中的static作用:
1.修飾變量:static關鍵字用于修改標識符的鏈接屬性,從external改為internal,但標識符的存儲類型和作用域不受影響,會延長它的生存周期。static修飾全局變量,全局變量具有外延性,被static修飾后,作用域僅限制在本文件,不能在其它文件中訪問,即便是extern外部聲明也不可以,他們都是程序運行結束后才釋放。
2.修飾函數:加在函數定義或聲明的前面,會限制函數作用域到文件作用域。
C++中static作用:
在C++中,關鍵字static除了繼續保持上面的特性外,還可以用來修飾類的成員變量和成員函數,使之成為靜態成員變量和靜態成員函數,統稱為靜態成員。
靜態數據成員?:
靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只占一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。
靜態數據成員是在程序開始運行時被分配空間,到程序結束之后才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。
靜態數據成員可以被初始化,但是只能在類體外進行初始化(類內定義,類外初始化,type 類名::變量名=初值)。
靜態數據成員既可以通過對象名引用,也可以通過類名引用。
靜態成員函數?:
靜態成員函數和靜態數據成員一樣,他們都屬于類的靜態成員,而不是對象成員。
非靜態成員函數有this指針,而靜態成員函數沒有this指針,所以靜態對象不能直接調用非靜態成員函數。
static 修飾成員函數,它的作用只有一個,用于管理static成員。
靜態成員函數主要用來訪問靜態數據成員而不能直接訪問非靜態成員。
需要注意的幾點:
(1)sizeof不將靜態成員變量的大小計算在內,例如:
class Test
{
private:
int value;
static int count;
};
int Test::count=0;
int main(int argc, char *argv[])
{
Test t;
cout<<"sizeof(Test) = "< } 運行結果:sizeof(Test) = 4,驗證了sizeof運算符不會將靜態成員變量的大小計算在內。另外,在使用靜態變量成員的時候不進行初始化,鏈接的時候會出錯。 (2)靜態成員是屬于類的,而不是屬于某個對象的,即便沒有一個實例,類的靜態成員變量也已經存在了,因此靜態變量除了能夠和普通成員一樣通過對象訪問外,還可以通過類名訪問,訪問形式為? ? 類名::成員名。同時靜態成員受到private、public等的限制,因此,在類外通過類名訪問時,需要其訪問權限為public。 (3)靜態成員函數不能直接訪問類的非靜態成員 由于靜態成員函數屬于整個類,在類實例化對象之前就已經分配空間了,而類的非靜態成員必須在類實例化對象后才有內存空間,因此在靜態成員函數中直接訪問非靜態成員變量或者直接調用非靜態成員函數就會出錯。 C 語言 C++
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。