以下代碼不會編譯,而名稱「aNumber」在使用前未聲明。聲明在使用C++之前?
class A
{
A()
:aNumber(100)
{
}
void foo()
{
aNumber = 0;
}
int aNumber;
};
如果上面的代碼編譯,那麼爲什麼不以下: - 由成員變量
A.
class Dummy
{
void foo(INT);
typedef int INT;
};
B.Default初始化: -
class Dummy
{
void foo(int y = x);
int x;
};
class A {A():aNumber(aStaicMember){} int aNumber; void foo(int x = aStaicMember); // aStaicMember還沒有被decalred靜態int aStaicMember; //聲明}; int A :: aStaicMember = 100; //定義當上面是真的那麼爲什麼不是typedef,我仍然感到困惑 – 2010-08-31 10:10:46
我已經顯示你的typedef也是可以的,重要的部分是_where_你使用的名字,而不是名稱是typedef還是別的.chubsdad引用了相關的標準文本9.2/2。 – MSalters 2010-09-01 08:25:54