我的課程筆記說「C++需要在塊中和類型之間使用聲明,但不在類型中使用」。在使用C++之前聲明的規則是什麼?
這是什麼意思?
int f() {
if (i)
return i;
int i = 1; //allowed?
return 0;
}
//not allowed?
int g() {
if (i)
return i;
return 0;
}
int i = 1;
我的課程筆記說「C++需要在塊中和類型之間使用聲明,但不在類型中使用」。在使用C++之前聲明的規則是什麼?
這是什麼意思?
int f() {
if (i)
return i;
int i = 1; //allowed?
return 0;
}
//not allowed?
int g() {
if (i)
return i;
return 0;
}
int i = 1;
號兩者的實施例「在塊」和既不那些被允許。如果您嘗試編譯示例代碼,您將立即收到錯誤消息。
然而,這將被允許:
class Foo {
int f() {
return i;
}
private:
int i;
};
這是一種內,這就是很重要的區別。
這兩個都是錯誤的。正確的形式是這樣的:
int f() {
int i = 1;
if (i)
return i;
}
int f() { }
是一個塊。您必須聲明i
才能在該塊中使用。
兩者都是不允許的。 什麼是雖然允許如下:
struct F {
void f()
{
if(i) return i;
}
int i;
};
這裏F是一個類型,一個用戶定義的結構類型。這就是「在一個類型中」的含義。你的例子都是「在一個塊內」的情況。
C++在塊中使用之前需要聲明。然而,在一個結構/類中,只要這個對象被創建,這個聲明就會隱式地產生。調用默認構造函數,將內存分配給其變量,從而消除未定義的類型問題。
這是我對這行的理解。如果錯了,請糾正我編譯器是如何知道派生數據類型成員的reqd內存空間的。