C++實例化對象時加()與不加()的區(qū)別
#include <iostream>
? 2 using namespace std;
? 3
? 4 class Test
? 5 {
? 6 public:
? 7???????? Test(){cout << "Test()" << endl;}
? 8???????? ~Test(){cout << "~Test()" << endl;}
? 9???????? Test(const Test &t){cout << "Test(const Test &t)" << endl;}
?10 private:
?11???????? int x;
?12???????? int y;
?13 };
?14
?15 int main()
?16 {
?17
?18???????? Test t1;
?19???????? Test t2();
?20???????? return 0;
?21 }
為什么實例化t2時不會執(zhí)行構(gòu)造函數(shù)?
2015-10-18
A *a=new A; 和 A *a=new A();?
都是調(diào)用A類的默認構(gòu)造函數(shù)!?。?!
但是如果單獨聲明一個A 類變量,如:A a;
則調(diào)用的是默認構(gòu)造函數(shù),
但是不能寫成 A a()來調(diào)用默認構(gòu)造函數(shù)?。∫驗檫@種形式會被識別成一個:
名稱為a的不接受任何參數(shù),返回值為A類型的函數(shù)?。?!
2015-10-18
難道是編譯器理解為Test t2()為一個函數(shù)的聲明?