1.隐式创建

首先我们定义一个测试类

class Person {private:int age;string name;public:Person() {cout<<"this is construct~";}Person(int age, string name) {this->age = age;this->name = name;cout<<"name is: "<<name<<", age is: "<<age<<endl;}
};

然后我们在main方法中隐式创建Person对象

Person p1;
cout<<endl;
Person p2(18, "lili");
cout<<endl;

2.显示创建

当然,我们也可以像其他编程语言一样,显示创建一个对象

Person p3 = Person();
cout<<endl;
Person p4 = Person(16, "xx");
cout<<endl;

这种方式,与上面的第一种方式原理基本一直。

3.用new创建

当然我们还可以用new关键字来创建对象

Person *p5 = new Person();
cout<<endl;
Person *p6 = new Person(14, "yy");

注意new出来的对象,都需要用指针接收。

4.上述三种方式的区别

上面三种方式可以认为是两种方式,因为第一种方式与第二种方式基本相同。那么具体区别在哪里?

1.new出来的对象必须要用指针接收,并且需要显式delete销毁对象释放内存。

2.内存位置不同。
对于隐式声明

Person p1;

p1对象位于栈空间。

Person *p5 = new Person();

p5对象位于堆空间。

3.内存分配时间不同
使用隐式创建对象的时候,创建支出就已经分配了内存。而使用new的方式,如果对象没有初始化,此时没有分配内存空间,也无法delete。

Person *p = NULL;
delete p;

上述语句如果执行,会有各种意想不到的情况发生。

4.隐式声明的对象是局部变量,出了函数就没有了。而new出来的指针对象可以在方法之间传递,且该指针对象所指向的堆中的对象实例仍然存在。

5.频繁调用场合并不适合new,就像new申请和释放内存一样。

c++三种实例化对象方式相关推荐

  1. C++的三种实例化对象方式

    一.隐式创建 class CEmployee { private: int age; int id; public: CEmployee() { cout << "这是构造函数& ...

  2. java .class 实例对象_Java产生Class类的三种实例化对象的方法

    Java产生Class类的三种实例化对象的方法 1.object.getClass 2.类名.class直接根据某个具体的类来取得Class实例化对象 3.Class.forName(String c ...

  3. (转)Spring的三种实例化Bean的方式

    http://blog.csdn.net/yerenyuan_pku/article/details/52832793 Spring提供了三种实例化Bean的方式. 使用类构造器实例化. <be ...

  4. 框架源码系列九:依赖注入DI、三种Bean配置方式的注册和实例化过程

    一.依赖注入DI 学习目标 1)搞清楚构造参数依赖注入的过程及类 2)搞清楚注解方式的属性依赖注入在哪里完成的. 学习思路 1)思考我们手写时是如何做的 2)读 spring 源码对比看它的实现 3) ...

  5. asp.net session 介绍一三种Session存储方式

    asp.net session 介绍一三种Session存储方式 www.firnow.com 时间:2009-03-04 作者:匿名 编辑:sky 点击: 1478 [评论] 对于asp.net的程 ...

  6. Class java用法,java中Class的三种实例化

    1.调用Object类中的getClass()方法:import java.util.Date; public class ReflectTest3 { public static void main ...

  7. Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress

    Kubernetes的三种外部访问方式:NodePort.LoadBalancer和Ingress(转发) 原文 http://cloud.51cto.com/art/201804/570386.ht ...

  8. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式

    SPA特点优点缺点总结 1. 单页Web应用(SPA - Single Page web Application) 也就是说只有一个HTML文件的Web应用, 我们就称之为单页Web应用, 就称之为S ...

  9. Verilog VHDL三种建模描述方式——2选1数据选择器

    标题Quartus II 标题 Verilog VHDL三种建模描述方式--2选1数据选择器 1,结构化描述方式: 是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描 ...

最新文章

  1. 编程模式 之美 -- 抽象工厂模式
  2. jquery-12 折叠面板如何实现(两种方法)
  3. 实验五 Java网络编程及安全 实验报告 20135232王玥
  4. OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()
  5. php 5.4.39 安装,Lamp 安装(CentOS6.6, php-5.4.39, httpd-2.4.12, mysql-5.6.24)
  6. mysql每一行数据类型_MySQL_MySQL编程中的6个实用技巧,每一行命令都是用分号(;)作为 - phpStudy...
  7. intellij自动补全变量名和变量属性
  8. 复盘图像双线性插值推导细节
  9. 网络广告的效果测定与评估
  10. 盖茨再捐200亿美元,谷歌云转投ARM,推特员工因马斯克遭CEO警告,今日更多大新闻在此...
  11. Windows系统资源监控工具perfmon-只能查看报告。
  12. openstack云计算平台 2(计算服务、Networking 服务、命令行方式启动实例)
  13. AR开发有哪些AR库,AR SDK
  14. 隐藏win10任务栏输入法M图标
  15. 如何区分np.random.normal()、np.random.randn()、np.random.randint()、np.random.random()、np.random.choice()
  16. office365离线安装
  17. 荣耀30s刷鸿蒙,荣耀30S“超过”苹果XS,靠华为鸿蒙框架优化能力
  18. 如何理解金融中的 “头寸”
  19. 【跟阿铭学 Linux 第一章】:学习之初
  20. java计算机毕业设计医护人员排班系统源码+系统+lw+数据库+调试运行

热门文章

  1. 【线性代数】3-2:零空间(Nullspace)
  2. MaskRCNN RPN网络分析
  3. i386、amd64、i686...
  4. 财务结算批量数据处理 流式_处理极端情况:财务扩展和流式传输
  5. LeetCode-226-反转二叉树
  6. null与空字符串区别
  7. redis 4.Redis的发布和订阅
  8. 生成tli tlh 文件
  9. 头歌嵌入式操作系统Linux系统操作
  10. kaggle竞赛系列3----python数据挖掘时间序列时间量分析(以elo竞赛为例)