看到一篇文章對建立物件時的集中情況,梳理得很清楚
c++建立物件的語法有—–
1 在棧上建立 myclass a;
2 在堆上建立加括號 myclass *a= new myclass();
3 不加括號 myclass *a = new myclass;也是在對上建立,並且有乙個自定義型別指標指向myclass
4.—————myclass a();宣告了乙個返回值為myclass型別的無參函式。
#include
class myclass
myclass(int i):num(i)
void mymethod()
private:
int num;
};
//---------------對於呼叫建構函式
myclass c1;//表示使用不帶引數的建構函式,或者有預設引數值的建構函式。
myclass c2();//不會呼叫無參建構函式,各種情況下該處是宣告乙個返回值為myclass型別的函式而已
myclass c3(1);//呼叫引數為int的建構函式
/*---------------對於new關鍵字加括號和不加括號的區別---
1.對於自定義型別來說沒有區別,都是使用預設建構函式
2.對於內建型別來說加括號會初始化
*/std::cout
<<:endl>
myclass *c4 = new myclass();
c4->mymethod();
myclass *c5 = new myclass(1);
c5->mymethod();
myclass *c6 = new myclass;
c6->mymethod();
//內建型別
C 建立類物件時(無參)後不加括號與加括號的區別
在不考慮用new動態建立物件的情況下,用最普通的 類名 物件名 引數 的方法建立物件 先貼上最正常最普通的 includeusing namespace std class c c intm private intn int main ok,現在我們看看執行結果 ok,預期地執行了第乙個建構函式。但...
new物件時,類名後加括號與不加括號的區別
預設建構函式 關於預設建構函式,請參見隨筆 類中函式 請看測試 1 include 2 using namespace std 34 空類 5class empty6 89 乙個預設建構函式,乙個自定義建構函式 10class base11 18 base int nvalue 19 2324 pr...
new物件時,類名後加括號與不加括號的區別
include using namespace std 空類 class empty 乙個預設建構函式,乙個自定義建構函式 class base base int nvalue private int m nvalue 乙個復合預設建構函式 class custom private int m nv...