c++的类中,声明一个对象好还是用指针申请一块空间好?
2010-12-03 11:21
330 查看
c++中的A a;就已经构造了对象; 而在java中 A a;
就是声明,还没有分配空间,
在c++中就非常的灵活
A a;在栈(stack)上分配空间
A * a= new A;在堆(heap)上分配空间
栈上空间自动回收
堆空间需要程序员手动回收
关于哪个好,先分析一下
这个本质上是对象分配区域的问题,前者是在栈(stack)上分配空间,后者是在堆(heap)上分配空间。
栈的情况:
栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收。
坏处就是栈空间有限,而且不能人为控制对象的生存期,
比如你无法将一个函数内部的栈上的对象返回,因为这个函数执行完毕后栈空间会自动回收。
堆的情况 堆上分配空间就相反,new一个空间出来是很慢的,而且对堆上对象的访问也稍慢于栈上。
一旦new一个空间出来,需要自己手动去delete回收,系统不会帮你管理回收(用GC的除外),
但是分配空间大小灵活,而且正因为是手动回收的,你可以自由控制对象生存期,常用来跨域传递对象。
相关文章推荐
- C++的类中,声明一个对象好还是用指针申请一块空间好?
- 建立一个存储和处理字符串的类DelCharStr。构造函数:动态申请存储字符串所需内存空间,并且即能用指定的字符串也能用默认的值0为所声明的对象进行初始化。
- C++ 声明一个变量 和 New 一个空间的区别
- 作为一个c++而非c程序员,该弃函数指针投函数对象了
- C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间
- C++:对象数组、对象动态申请和释放、类的定义和实现分开、this指针、常成员函数、时钟
- C++ 关于在一个类中定义另一个类的指针与对象
- C++的查看指针指向空间的所在的区域(是堆还是栈或者静态)和大小
- C++学习总结_声明一个对象并实现声明类的方法
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- 从零开始学C++之类与对象:类声明、类作用域、前向声明、this指针、嵌套类、PIMPL 技法 等
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]
- C++指针与引用(一):函数传参,是该传对象,还是传指针,抑或是引用
- C/C++—— C++中一个空对象为什么还要占用一个字节空间
- [C++学习笔记14]动态创建对象(定义静态方法实现在map查找具体类名对应的创建函数,并返回函数指针,map真是一个万能类)good
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- JAVA中申请了两个对象,分别在调用方法和声明方法中把其中一个对象直接赋值给另外一个对象,运行结果,求原理。
- C++中对已分配空间的指针调用一个类的构造函数
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间
- new、delete、指向连续空间的指针、数组、空间释放、空间申请[C++][内存管理]