首页 新闻 会员 周边 捐助

C++中对象new与new 有什么区别?

0
悬赏园豆:20 [待解决问题]

C++中对象new与new 有什么区别,

我在C++教程中看到 new 与不new都可以正常调用该类方法和属性,那new与 new到底有什么区别啊?

c++
为梦奔跑的主页 为梦奔跑 | 初学一级 | 园豆:60
提问于:2012-05-09 10:19
< >
分享
所有回答(4)
0

http://zhidao.baidu.com/question/43416932.html  这个很好的解释了 我搞。net的 不过这种问题可以上百度  很多的

小w威 | 园豆:37 (初学一级) | 2012-05-09 10:22
0

1——

在构造上的区别:常规变量定义不使用new,定义的对象在定义后就自动可以使用,指针变量定义必须使用new进行对象实例的构造。

2——

使用上的区别:使用new的是一个指针对象,此时对对象成员的访问需要使用指针操作符“->”,而不使用new的是常规对象,使用普通成员操作符“.”。

3——

内存与安全:

指针变量必须显式的调用析构函数,而且很容易错误操作,因为C里的指针太灵活了。

4——

常规变量定义一般只能在有限的范围使用,而指针变量的作用范围要宽广很多。

无之无 | 园豆:5095 (大侠五级) | 2012-05-09 10:31

在开发中new对象有什么必要性吗??

能具体说下吗?谢谢

支持(0) 反对(0) 为梦奔跑 | 园豆:60 (初学一级) | 2012-05-09 11:12

@为梦奔跑: new对象的寻址更灵活点而已,在一般开发里,常规定义与指针定义的区别不是很大。一般都是建议能不使用指针对象的时候不要使用。

另外,非new生成的对象也可以通过取地址的方式把对象赋值给一个指针变量,此时,则千万别对指针进行析构(delete),事实上也析构不了(会有运行错误,因为对象本身是非new构造的)。

new操作使用最多的地方是强制分配内存块。具体的情况还是要根据实际情况来考虑。我不用C/C++已经多年了,很多也都丢光了。

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-05-09 11:36
0

如果在函数中直接定义一个类的对象则是在堆上分配空间,函数调用结束之后,对象即被销毁;而如果new一个对象则是在堆上分配空间,此时如果不需要了需要手动delete掉内存空间,否则会造成内存泄漏...

hazir | 园豆:216 (菜鸟二级) | 2012-05-20 17:29

居然没看懂 lz 问的是什么意思,什么叫new和不new。汗。!

你的前半句写错一个字,“堆”应该为“栈”。

A a; 这个是a构造在栈上空间。离开函数自动析构。

A* pA = new A(); 这个是构造在堆上,不需要的时候必须主动调用delete pA;

支持(0) 反对(0) hoodlum1980 | 园豆:573 (小虾三级) | 2012-06-07 16:32
0

new出来的对象是在堆上分配的内存,在函数体内显示定义的对象是在函数栈里面分配的内存。两者最大的区别在于前者存在与堆中,不会随着函数的返回而被销毁,而后者当函数返回的时候会自动清空函数栈里的对象,并自动调用析构函数。

zuibunan | 园豆:225 (菜鸟二级) | 2012-07-27 08:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册