類或者結構體用無參建構函式建立物件時不需要帶括號, 否則會當成函式宣告
阿新 • • 發佈:2019-01-03
例項1: 類
#include <iostream> using namespace std; class Test { public: Test() { } Test(int) { } void fun() { } }; int main(void) { Test a(10); // 語句1 a.fun(); // 語句2 Test b(); // 語句3, Foo b()並不會生成Foo型別的物件b, // 而是宣告一個返回值是Foo的函式b, 這個函式的引數為空。 // 沒有引數引數時不需要帶括號,應該為 Test b。 b.fun(); // 語句4會出錯, 如此以來,b.fun()就會被解釋成通過函式b // 呼叫另外一個函式fun(),這顯然是不對的。 return 0; }
例項2: 結構體
#include <iostream> using namespace std; struct Foo { Foo() { } Foo(int) { } void fun() { } }; int main(void) { Foo a(10); // 語句1 a.fun(); // 語句2 Foo b(); // 語句3, Foo b()並不會生成Foo型別的物件b, // 而是宣告一個返回值是Foo的函式b, 這個函式的引數為空。 // 沒有引數引數時不需要帶括號,應該為 Foo b。 b.fun(); // 語句4會出錯, 如此以來,b.fun()就會被解釋成通過函式b // 呼叫另外一個函式fun(),這顯然是不對的。 return 0; }