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

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

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



在C++语法中,静态对象因为是在STACK上生成,于是比动态生成对象的效率要高,并且不会形成内存泄露。而我发如今实际工做中,通常都是动态生成对象(用NEW),动态生成有什么好处吗?
spa


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


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


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


另:
   若是你的对象是全局的,那静态,动态也同样:都是在程序退出时析构。都不用关心内存问题。并且动态对象能够在程序未退出进删除,这点要比静态对象强。
.net


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