公转最快的行星:C++对象定义

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 21:44:04
请问一下 CPoint ptX; 和 CPoint ptX = new CPoint();两者的区别是什么?

CPoint ptX = new CPoint();
----不能这样写,
应该是:CPoint *ptX = new CPoint();

两者的区别是:前者是在栈内存(即函数局部)中分配空间。当函数结束,内存也被释放了,即对象不存在了。
后者在堆内存中分配空间。当函数结束的时候,内存不释放,需要自己使用:
delete ptX来释放空间

前者是正确的用法。
后者不是c++里的定义对象的用法,java里面是这样定义的,但是c++里面定义对象的话只用CPoint ptX,带参数的话是CPoint ptX(0,0)这样

两者的区别是:前者是在栈内存(即函数局部)中分配空间。当函数结束,内存也被释放了,即对象不存在了。
后者在堆内存中分配空间。当函数结束的时候,内存不释放,需要自己使用:
delete ptX来释放空间

我也问过这样的问题,希望高手解答.

他们都说得很正确