class A
{
static void f(void)
{
int a;
static int b;
}
};
a
和b
之間是否有任何(正式或實際)區別?靜態方法中的正常和靜態局部變量之間是否有區別?
class A
{
static void f(void)
{
int a;
static int b;
}
};
a
和b
之間是否有任何(正式或實際)區別?靜態方法中的正常和靜態局部變量之間是否有區別?
是的,兩者是不同的。對於每個呼叫a
將被創建,而b
將只創建一次,對於A
類型的所有對象都是相同的。同樣我的意思是,所有的對象共享一個b
的單個內存。
這是否意味着無論創建多少個「A」對象,該值都保持不變? – 2014-11-20 20:17:25
是的,它總是一樣的。 – Venkatesh 2014-11-20 20:18:37
@laiello這是什麼靜態手段(這裏):它不依賴於對象;全班同樣如此。 – deviantfan 2014-11-20 20:19:09
是,考慮以下因素:
#include <iostream>
using namespace std;
class A
{
public:
static void func()
{
static int a = 10;
int b = 10;
a++;
b++;
std::cout << a << " " << b << endl;
}
};
int main() {
A a, b;
a.func();
b.func();
a.func();
return 0;
}
a
跨的func
所有實例共享,但b
是本地的每個實例,所以輸出:
11 11
12 11
13 11
'b'將在呼叫中保留其值,而'a'將每次重新初始化... – dlf 2014-11-20 20:16:17
http://en.c ppreference.com/w/cpp/language/storage_duration – 2014-11-20 20:17:06
當你嘗試過時發生了什麼? – Caleb 2014-11-20 20:21:23