先看一段简单的代码吧:#include usingnamespacestd;structCLS{intm_i;CLS(inti):m_i(i){}CLS(){CLS(2);}};intmain(intargc,char*argv[]){CLSobj1;cout< CLS*obj2=newCLS();cout<m_i< deleteobj2; return0;}上面代码的输出结果是:-12203120740显然,我预期的输出结果是2,但不管是在栈上构造对象还是在堆上构造对象,结果都不是我们想要的。这是什么原因呢?CLSobj1;为什么不能写成CLSobj1();为什么自动分配的对象和new的对象会输出不同的结果?
慕少森
炎炎设计
相关分类