原址

C++在创建对象的时候可以采用两种方式:(例如类名为Test) Test test  或者 Test* pTest = new Test()。

这两种方法都可以实例化一个对象,但是这两种方法有很大的区别,区别在于对象内容所在的内存空间不同,众所周知,内存的分配方式有三种
      (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 
      (2)  在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束后在将这些局部变量的内存空间回收。在栈上分配内存空间效率很高,但是分配的内存容量有限。

(3) 从堆上分配的。程序在运行的时候用 malloc 或 new 申请任意多少的内存,程序员自己负责在何时用 free 或 delete 释放内存。

不使用new创建的对象在栈中分配内存空间,自动调用析构函数删除该对象;

    使用new创建的对象在堆中分配内存空间,必须手动释放该对象的内存空间。


1、使用new方式创建类对象

[cpp] view plaincopy
  1. CTest* pTest = new CTest();
  2. delete pTest;

new之前不为该类对象分配任何内存空间,new申请的对象,则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。

2、使用变量定义方式创建类对象

[cpp] view plaincopy
  1. CTest mTest;

在创建之初就已经分配了内存空间,此种创建方式,使用完后不需要手动释放,该类析构函数会自动执行

3、new创建类对象与不new区别

下面是自己总结的一些关于new创建类对象特点:

  • new创建类对象需要指针接收,一处初始化,多处使用
  • new创建类对象使用完需delete销毁
  • new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间
  • new对象指针用途广泛,比如作为函数返回值、函数参数等
  • 频繁调用场合并不适合new,就像new申请和释放内存一样

C++ 对象创建方式相关推荐

  1. 第163天:js面向对象-对象创建方式总结

    面向对象-对象创建方式总结 1. 创建对象的方式,json方式 推荐使用的场合: 作为函数的参数,临时只用一次的场景.比如设置函数原型对象. 1 var obj = {}; 2 //对象有自己的 属性 ...

  2. Spring学习(二)—— 对象创建方式及依赖注入

    文章目录 对象创建方式 配置 依赖注入 构造器注入 Set方式注入 拓展方式注入 对象创建方式 默认使用无参构造器创建 当我们需要使用有参构造器时,有以下几种方式: 1.下标赋值 <!--第一种 ...

  3. javascript一种新的对象创建方式-Object.create()

    1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不 ...

  4. JavaScript新的对象创建方式---Object.create()

    Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式, 第一个参数是要继承的原型,如果不是一个子函数,可以传一个null, 第二个参 ...

  5. spring配置详解-三种对象创建方式_

    新建一个包,b_create,关于Spring创建对象的方式,咱们首先先介绍默认方式,我复制一个配置文件过来,在这个包下创建一个配置文件,把这些注释可以删掉了,现在咱们看到的情况,是常见的情况,这种情 ...

  6. Spring三种对象创建方式

    1.创建方式1:无参构造 我们先创建一个User类: public class User {private String name;private int age;public User() {Sys ...

  7. 数分笔记整理7 - Pandas Pandas - DataFrame类型的对象 - 创建方式

    DataFrame类型 DataFrame是一个多维数据类型.因为通常使用二维数据,因此,我们可以将DataFrame理解成类似excel的表格型数据,由多列组成,每个列的类型可以不同. 因为Data ...

  8. 转 cocos2d-x 3.0 常用对象的创建方式

    cocos2d-x 3.0 中所有对象几乎都可以用create函数来创建,其他的创建方式也是有create函数衍生. 下面来介绍下create函数创建一般对象的方法,省得开发中经常忘记啥的. 1.精灵 ...

  9. JavaScript对象的几种创建方式?

    **` JavaScript对象的几种创建方式? `**

最新文章

  1. [HAOI2011]Problem b
  2. WEB 进程的查看和关闭(kill)
  3. 数据结构的简单理解(1)
  4. 红帽linux iso镜像,红帽 Red Hat Linux相关产品iso镜像下载
  5. 五:CentOS7安装出现Warning
  6. mysql用户和权限备份_备份MySQL用户和权限
  7. WeCity未来城市2.0白皮书
  8. 如何远程访问Jetson Xavier/TX2
  9. ペイペイ mini program_小姐姐最爱的MINI,你了解吗?
  10. CSS权威指南(4)
  11. 【ACM竞赛】 动态规划
  12. 均匀分布产生高斯分布
  13. JavaScript模板引擎
  14. php的电阻率是多少,PTF65517KBT-10B14
  15. 计算机图像处理之形状变换
  16. 王道计组——计算机的组成
  17. Excel+VBA+之快速上手
  18. 寒假算法训练1-J(分棍子,求最长棍子的数量,另外学习map的排序方法)
  19. FileNotFoundException 问题的解决
  20. 专题模块phpcms

热门文章

  1. Redis学习手册(List数据类型)(转)
  2. Yii框架官方指南系列41——专题:自动代码生成
  3. WCF分布式开发必备知识(4):Web Service(转)
  4. 转帖一则——从医学角度论成熟
  5. 好朋友的爬虫共享资料,真佩服
  6. 做好开源项目 需要坚持
  7. 无向图java_Java实现无向图的建立与遍历
  8. 记事本如何运行python代码_利用Python开发实现简单的记事本
  9. oracle+imp部分数据,ORACLE数据库IMP逻辑导入出现ORA-00910的处理案例
  10. idea抽取重复方法快捷键_IDEA 真牛逼,900行 quot;又臭又长quot; 的类重构,几分钟搞定...