动态创建一个类对象,就是使用new运算符为对象在堆空间中分配内存。这个过程分为两步:第一步执行operator new( )函数,在堆空间中搜索一块内存并进行分配;第二步调用类的构造函数构造对象。这种方法是间接调用类的构造函数。函数
在C++语法中,静态对象因为是在STACK上生成,于是比动态生成对象的效率要高,并且不会形成内存泄露。而我发如今实际工做中,通常都是动态生成对象(用NEW),动态生成有什么好处吗?
spa
缘由 1:
“静态对象因为是在STACK上生成,于是比动态生成对象的效率要高,并且不会形成内存泄露”
不会形成内存泄露 的原理你应该清楚吧,就是由于在你的对象生存的函数退出时,对象自动析构了。但~~~~~
若是你的对象要在多个涵数中使用,或者要在一个函数中创建,而在另外一个函数中使用(COM 就是用这种方法使用对象的),那你怎么办?固然只能是用 new 的方法了。
缘由 2:
函数的传址与传值的不一样你应该懂吧。
标明动态对象的是一个指针,标明静态对象的是一个值。当这个对象做为别的函数的参数时,你就知动态对象的做用了。
另:
若是你的对象是全局的,那静态,动态也同样:都是在程序退出时析构。都不用关心内存问题。并且动态对象能够在程序未退出进删除,这点要比静态对象强。
.net
参考讨论:http://bbs.csdn.net/topics/20114330指针