在看《C++Primer》第四版 第5.11節new與delete,產生了一些疑惑,對於一個沒有定義任何建構函式的類param,
new param()和new param是不同的,對於內建類型也是一樣,書上的例子只給了內建類型int
view plaincopy
to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- int *a = new a;
- int *b = new b();
int *a = new a;<br />int *b = new b();
其中a 為 隨機值,按書上說法是,a為上次位於該記憶體的值,b初始化為0;現測試類別類型的結果
view plaincopy
to clipboardprint?
- class param
- {
- private:
- int x,y;
- }
- void main()
- {
- Param *a = new Param;
- Param *b = new Param();
- Param c;
- Param d;
- Param *e = new Param();
-
- }
class param<br />{<br />private:<br /> int x,y;<br />}<br />void main()<br />{<br /> Param *a = new Param;<br /> Param *b = new Param();<br /> Param c;<br /> Param d;<br /> Param *e = new Param(); </p><p>}
這是未調試前的值
這是調試後的的值
由此可以看到 對於沒有提供任何建構函式的類,new 的時候加括弧,會幫你創造一個預設建構函式,而且幫你初始化;
而new的時候沒有加括弧,也會幫你構造一個預設建構函式,只是什麼都沒做。
在看《C++Primer》第四版 第5.11節new與delete,產生了一些疑惑,對於一個沒有定義任何建構函式的類param,
new param()和new param是不同的,對於內建類型也是一樣,書上的例子只給了內建類型int
view plaincopy
to clipboardprint?·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- int *a = new a;
- int *b = new b();
int *a = new a;<br />int *b = new b();
其中a 為 隨機值,按書上說法是,a為上次位於該記憶體的值,b初始化為0;現測試類別類型的結果
view plaincopy
to clipboardprint?
- class param
- {
- private:
- int x,y;
- }
- void main()
- {
- Param *a = new Param;
- Param *b = new Param();
- Param c;
- Param d;
- Param *e = new Param();
-
- }
class param<br />{<br />private:<br /> int x,y;<br />}<br />void main()<br />{<br /> Param *a = new Param;<br /> Param *b = new Param();<br /> Param c;<br /> Param d;<br /> Param *e = new Param(); </p><p>}
這是未調試前的值
這是調試後的的值
由此可以看到 對於沒有提供任何建構函式的類,new 的時候加括弧,會幫你創造一個預設建構函式,而且幫你初始化;
而new的時候沒有加括弧,也會幫你構造一個預設建構函式,只是什麼都沒做。