關於靜態變數

2021-07-09 12:06:21 字數 699 閱讀 2033

對於函式來說,定義與宣告很容易區別,但對於變數來說則不是,為了辨明,試驗了一下幾段**:

#include

using namespace std;

class test2;

//int test2::i;

int main(int argc, const char * argv)

這段**可以通過 ,此時主函式中未使用類test2;

#include

using namespace std;

class test2;

//int test2::i;

int main(int argc, const char * argv)

這段則不行,如果將!!!!!!處改為cout<

#include

using namespace std;

class test2;

int test2::i;//!!!!!!

int main(int argc, const char * argv)

這段**又可以過,這說明類中的靜態變數確實只是宣告不會定義,必須在類外對其進行定義,而普通變數在類中會定義即開闢記憶體空間。

綜上,原因應該是,在主函式中的變數使用前必須定義,而在類中則不必如此只要宣告就好。這說明在類中static修飾的變數只是宣告,而不加static修飾的變數則是定義,但在主函式中這二者都是定義。

關於靜態變數

靜態變數的型別關鍵字是static,其包括靜態全域性變數和靜態區域性變數。靜態區域性變數的作用域是區域性的,即存在於乙個檔案或者乙個函式中,而靜態全域性變數則存在於整個函式中,即當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。靜態區域性變數和動態區域性變數 3 4 5 6...

靜態變數和非靜態變數

class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...

關於靜態變數的繼承

父類 package test public class father 子類1 package test public class son1 extends father 子類2 package test public class son2 extends father 測試 package tes...