//原文參考https://blog.csdn.net/lanchunhui/article/details/52503332 你以為你定義了一個類的對象,其實在編譯器看來你是聲明瞭一個函數 修改為: 當構造函數中存在一些參數時: 當構造函數的參數帶預設值: ...
//原文參考https://blog.csdn.net/lanchunhui/article/details/52503332
你以為你定義了一個類的對象,其實在編譯器看來你是聲明瞭一個函數
1 class Test{ 2 public: 3 Test(){ }//無參構造函數 4 void fool(){ } 5 }; 6 int main(){ 7 Test t(); // 編譯器會將 t 視為一個函數; 8 t.fool(); // 出錯:C++表達式必須包含類類型 9 return 0; 10 }
修改為:
1 //對象的定義,修改為: 2 Test t;
當構造函數中存在一些參數時:
1 class Test{ 2 public: 3 Test(int i) {} 4 ... 5 }; 6 int main(){ 7 Test t(5); 8 ... 9 }
當構造函數的參數帶預設值:
1 class Test{ 2 Test(int i = 0) {} 3 }; 4 int main(){ 5 Test t;//此時i為預設值 6 Test t(1);//此時i為1 7 Test t();//此時報錯:C++ 表達式必須包含類類型 8 ... 9 }