c++中对象动态建立与静态建立的区别和应用

C++中建立类的对象有两种方式:
(1)静态建立,例如 A a;
     静态建立一个类对象,就是由编译器为对象在栈空间中分配内存。使用这种方法,是直接调用类的构造函数。
(2)动态建立,例如 A* p = new A();

     动态建立一个类对象,就是使用new运算符为对象在堆空间中分配内存。这个过程分为两步:第一步执行operator new( )函数,在堆空间中搜索一块内存并进行分配;第二步调用类的构造函数构造对象。这种方法是间接调用类的构造函数。



在C++语法中,静态对象由于是在STACK上生成,因而比动态生成对象的效率要高,而且不会造成内存泄露。而我发现在实际工作中,一般都是动态生成对象(用NEW),动态生成有什么好处吗?


原因 1:
“静态对象由于是在STACK上生成,因而比动态生成对象的效率要高,而且不会造成内存泄露”


  不会造成内存泄露 的原理你应该清楚吧,就是因为在你的对象生存的函数退出时,对象自动析构了。但~~~~~
  如果你的对象要在多个涵数中使用,或者要在一个函数中建立,而在另一个函数中使用(COM 就是用这种方法使用对象的),那你怎么办?当然只能是用 new 的方法了。


原因 2:
   函数的传址与传值的不同你应该懂吧。
   标明动态对象的是一个指针,标明静态对象的是一个值。当这个对象作为别的函数的参数时,你就知动态对象的作用了。


另:
   如果你的对象是全局的,那静态,动态也一样:都是在程序退出时析构。都不用关心内存问题。而且动态对象可以在程序未退出进删除,这点要比静态对象强。


参考讨论:http://bbs.csdn.net/topics/20114330

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值