C++ Primer Plus 第六版筆記html
關於對象聲明的思考ios
轉自:http://www.cnblogs.com/weiqubo/archive/2009/11/02/1930042.html函數
若是這樣定義對象:MyClass obj; 那麼它的構造函數將會被執行,若是調用obj.MyMethod();也會執行正確。
但是若是帶有括號:MyClass obj(); 那麼它的構造函數不會被執行,調用obj.MyMethod();也會出現語法錯誤,請問這種語法是把obj定義成什麼了?post
MyClass obj()把obj定義成什麼 從語法上看是定義了一個名爲obj,類型爲MyClass類(也就是返回值爲MyClass類型)的無參數函數。url
另外若是進行動態的堆分配的話是要帶括號的,好比 MyClass *obj = new MyClass() 不加會報錯(可是,在vc6.0中不加()並無報錯,並且結果是同樣的,緣由待解?可是有一條,若是類中定義了帶參數的構造函數,定義類時不用括號確定是錯誤的#add 爲避免錯誤,統一加括號爲妙)spa