现在的位置: 首页 > 综合 > 正文

c++中NEW对象的一些测试

2013年04月10日 ⁄ 综合 ⁄ 共 1657字 ⁄ 字号 评论关闭

 

    在看《C++Primer》第四版 第5.11节new与delete,产生了一些疑惑,对于一个没有定义任何构造函数的类param,

new param()和new param是不同的,对于内置类型也是一样,书上的例子只给了内置类型int

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. int *a = new a;  
  2. int *b = new b();  

其中a 为 随机值,按书上说法是,a为上次位于该内存的值,b初始化为0;现测试类类型的结果

  1. class param   
  2. {   
  3. private:   
  4.   int x,y;   
  5. }   
  6. void main()   
  7. {   
  8.    Param *a = new Param;   
  9.    Param *b = new Param();   
  10.    Param c;   
  11.    Param d;   
  12.    Param *e = new Param();   
  13.    
  14. }   

这是未调试前的值

这是调试后的的值

由此可以看到 对于没有提供任何构造函数的类,new 的时候加括号,会帮你创造一个默认构造函数,而且帮你初始化;

而new的时候没有加括号,也会帮你构造一个默认构造函数,只是什么都没做。

    在看《C++Primer》第四版 第5.11节new与delete,产生了一些疑惑,对于一个没有定义任何构造函数的类param,

new param()和new param是不同的,对于内置类型也是一样,书上的例子只给了内置类型int

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. int *a = new a;  
  2. int *b = new b();  

其中a 为 随机值,按书上说法是,a为上次位于该内存的值,b初始化为0;现测试类类型的结果

  1. class param   
  2. {   
  3. private:   
  4.   int x,y;   
  5. }   
  6. void main()   
  7. {   
  8.    Param *a = new Param;   
  9.    Param *b = new Param();   
  10.    Param c;   
  11.    Param d;   
  12.    Param *e = new Param();   
  13.    
  14. }   

这是未调试前的值

这是调试后的的值

由此可以看到 对于没有提供任何构造函数的类,new 的时候加括号,会帮你创造一个默认构造函数,而且帮你初始化;

而new的时候没有加括号,也会帮你构造一个默认构造函数,只是什么都没做。

抱歉!评论已关闭.