class F {
public:
F() {}
F(int) {}
void f() {}
};
void test() {
F f1;
F f2();
f1.f(); //可以正常執行
f2.f(); //會報錯,因為編譯認為F f2();是定義了一個返回值為F類型的函數,f2並不是F的對象,也無f()方法。
}
關於 new F() 和 new F 的區別。
class F {
public:
int a;
int b;
};
void test() {
F *f1 = new F;
F *f2 = new F();
cout << f1->a << endl; //此時輸出值為不確定的,根據內存狀態而定
cout << f2->a << endl; //此時是輸出0;
// 這是因為當F時PoD類型時,其成員變量會初始化;
// POD類型是指一個類或對象,其成員是原生數值類型(int, unsigned char, float, bool等等)
// 或者另外一個POD類型。POD對象看起來像C語言風格的結構對象
}