c++创建对象

c++的创建对象和java区别很大,java里所有的复杂类型(如 类实例)都是分配到堆中的,而c++则更灵活,所有的变量,不管什么类型,都可以自己指定分配到堆中还是栈中。

分配到栈中的写法:

Class object("param");//即声明又定义,调用默认构造函数 相当于Class object = Class("param");

object = Class("param");//重新创建

 

分配到堆中的写法:

Class *p ;//声明
p = &new Class();//定义

 

把变量分配到栈中和堆中都有各自的好处,要看情况而定。

分配到栈中的好处:不用自己做内存释放操作,这样不会有内存泄露的问题,这样比较省事。所有动态分配的内存都必须释放,否则会有内存泄露(如new 和delete必须成对出现)。

分配到堆中的好处:因为分配到栈中的变量都是编译时确定变量大小的,如果数组之类的,必须确定数组长度,而把变量分配到堆中则没有这种限制,灵活性更高。

 

另外,要使用一个变量,有两种方法。名字和指针(引用是const类型的指针)。上面的Class object,object就是一个名字。名字就是栈中的一个地址。Class *p,p本身也是一个名字,是一个地址,这个地址上存的是其他变量的地址,*p是一个指针,指向另一个变量。

 

 

posted @ 2012-12-14 14:06  fff8965  阅读(256)  评论(0编辑  收藏  举报