樓主小白,請教一下大家,為什麼C++中,靜態成員函數可以在類中定義。
如
class A
{
public:
static void func()
{
cout << "test" << endl;
}
};
而靜態成員變量卻不能在類裡面定義
class A
{
public:
static int a = 1; \\error
};
為什麼靜態成員函數和靜態成員變量會有這兩種差異?小弟在此先謝謝啦
樓上說的我覺得有一定的道理, 但是我覺得從本質來講,之所以成員函數可以直接定義,而成員變量不能直接定義主要是因為內存分配的問題
成員函數不需要考慮預分配內存的問題,可以直接在運行時分配堆棧內存,因此可以直接在編譯階段編譯到類中,運行調用時動態創建必要的堆棧。而靜態成員變量,是類的所有對象共有的,必須在編譯時就完成內存分配到靜態區而不在類中。所以靜態成員變量不能放在內中,而靜態成員變量可以放到類中