C++ 对象创建方式
原址
C++在创建对象的时候可以采用两种方式:(例如类名为Test) Test test 或者 Test* pTest = new Test()。
这两种方法都可以实例化一个对象,但是这两种方法有很大的区别,区别在于对象内容所在的内存空间不同,众所周知,内存的分配方式有三种
(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。
(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束后在将这些局部变量的内存空间回收。在栈上分配内存空间效率很高,但是分配的内存容量有限。
(3) 从堆上分配的。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。
不使用new创建的对象在栈中分配内存空间,自动调用析构函数删除该对象;
使用new创建的对象在堆中分配内存空间,必须手动释放该对象的内存空间。
1、使用new方式创建类对象
- CTest* pTest = new CTest();
- delete pTest;
new之前不为该类对象分配任何内存空间,new申请的对象,则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。
2、使用变量定义方式创建类对象
- CTest mTest;
在创建之初就已经分配了内存空间,此种创建方式,使用完后不需要手动释放,该类析构函数会自动执行
3、new创建类对象与不new区别
下面是自己总结的一些关于new创建类对象特点:
- new创建类对象需要指针接收,一处初始化,多处使用
- new创建类对象使用完需delete销毁
- new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间
- new对象指针用途广泛,比如作为函数返回值、函数参数等
- 频繁调用场合并不适合new,就像new申请和释放内存一样
C++ 对象创建方式相关推荐
- 第163天:js面向对象-对象创建方式总结
面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. 1 var obj = {}; 2 //对象有自己的 属性 ...
- Spring学习(二)—— 对象创建方式及依赖注入
文章目录 对象创建方式 配置 依赖注入 构造器注入 Set方式注入 拓展方式注入 对象创建方式 默认使用无参构造器创建 当我们需要使用有参构造器时,有以下几种方式: 1.下标赋值 <!--第一种 ...
- javascript一种新的对象创建方式-Object.create()
1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不 ...
- JavaScript新的对象创建方式---Object.create()
Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式, 第一个参数是要继承的原型,如果不是一个子函数,可以传一个null, 第二个参 ...
- spring配置详解-三种对象创建方式_
新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...
- Spring三种对象创建方式
1.创建方式1:无参构造 我们先创建一个User类: public class User {private String name;private int age;public User() {Sys ...
- 数分笔记整理7 - Pandas Pandas - DataFrame类型的对象 - 创建方式
DataFrame类型 DataFrame是一个多维数据类型.因为通常使用二维数据,因此,我们可以将DataFrame理解成类似excel的表格型数据,由多列组成,每个列的类型可以不同. 因为Data ...
- 转 cocos2d-x 3.0 常用对象的创建方式
cocos2d-x 3.0 中所有对象几乎都可以用create函数来创建,其他的创建方式也是有create函数衍生. 下面来介绍下create函数创建一般对象的方法,省得开发中经常忘记啥的. 1.精灵 ...
- JavaScript对象的几种创建方式?
**` JavaScript对象的几种创建方式? `**
最新文章
- [HAOI2011]Problem b
- WEB 进程的查看和关闭(kill)
- 数据结构的简单理解(1)
- 红帽linux iso镜像,红帽 Red Hat Linux相关产品iso镜像下载
- 五:CentOS7安装出现Warning
- mysql用户和权限备份_备份MySQL用户和权限
- WeCity未来城市2.0白皮书
- 如何远程访问Jetson Xavier/TX2
- ペイペイ mini program_小姐姐最爱的MINI,你了解吗?
- CSS权威指南(4)
- 【ACM竞赛】 动态规划
- 均匀分布产生高斯分布
- JavaScript模板引擎
- php的电阻率是多少,PTF65517KBT-10B14
- 计算机图像处理之形状变换
- 王道计组——计算机的组成
- Excel+VBA+之快速上手
- 寒假算法训练1-J(分棍子,求最长棍子的数量,另外学习map的排序方法)
- FileNotFoundException 问题的解决
- 专题模块phpcms
热门文章
- Redis学习手册(List数据类型)(转)
- Yii框架官方指南系列41——专题:自动代码生成
- WCF分布式开发必备知识(4):Web Service(转)
- 转帖一则——从医学角度论成熟
- 好朋友的爬虫共享资料,真佩服
- 做好开源项目 需要坚持
- 无向图java_Java实现无向图的建立与遍历
- 记事本如何运行python代码_利用Python开发实现简单的记事本
- oracle+imp部分数据,ORACLE数据库IMP逻辑导入出现ORA-00910的处理案例
- idea抽取重复方法快捷键_IDEA 真牛逼,900行 quot;又臭又长quot; 的类重构,几分钟搞定...