1. 对于全局对象,程序一开始,其构造函数就先被执行(比程序进入点更早);程序即将结束前其析构函数将被执行。

2. 对于局部对象,当对象诞生时,其构造函数被执行;当程序流程将离开该对象的声明周期时,其析构函数被执行。

3. 对于静态(static)对象,当对象诞生时其构造函数被执行;当程序将结束时其析构函数才被执行,但比全局对象的析构函数早一步执行。

4. 对于以new方式产生出来的局部对象,当对象诞生时其构造函数被执行,析构函数则在对象被delete时执行。时执行

静态全局对象和一般的全局对象的区别就是一般的全局对象在程序的其他文件中可以通过关键字extern来调用,而static声明的全局变量则只能在本文件中使用,这是链接性一个是外部的,一个是内部的!

注:关于1、2、3、4两点,做个例子程序验证一下:

class Demo1

{

public:

Demo1()

{

}

~Demo1()

{

}

};

class Demo2

{

public:

Demo2()

{

}

~Demo2()

{

}

};

class Demo3

{

public:

Demo3()

{

}

~Demo3()

{

}

};

class Global

{

public:

Global()

{

}

~Global()

{

}

};

// 声明一个全局对象

Global gApp;

// 声明一个静态对象

static Demo1 demo1;

// 程序入口点

void main()

{

//声明一个局部对象

Demo2demo2;

Demo3*demo3 = new Demo3;

delete demo3;

}

四种不同对象生存方式(in stack、in heap、global、local static)

在C++中,有四种方法可以产生一个对象。

第一种方法是在堆栈(stack)之中产生:

void MyFunc()

{

CFoofoo;    // 在堆栈(stack)中产生foo对象

...

}

第二种方法是在堆(heap)中产生:

void MyFunc()

{

CFoo*foo = new CFoo;    // 在堆(heap)中产生foo对象

...

}

第三种方法是产生一个全局对象

CFoo foo;    // 在任何函数之外作此操作

第四种方法是产生一个局部静态对象

void MyFunc()

{

staticCFoo foo;    // 在函数范围之内的一个静态对象

...

}

C++之全局对象、局部对象、静态对象详解相关推荐

  1. Java构造器、静态对象、非静态对象等的初始化顺序

    Java创建类对象时对于构造器,静态对象.非静态对象的初始化有一定的顺序,我简单归纳一下: class classes {public classes(String n) {System.out.pr ...

  2. [转载]内存分配 知识,全局,局部,静态变量

    [转载]内存分配 知识,全局,局部,静态变量 预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变 ...

  3. python深拷贝一个对象_Python对象的深拷贝和浅拷贝详解

    本文内容是在<Python核心编程2>上看到的,感觉很有用便写出来,给大家参考参考! 浅拷贝 首先我们使用两种方式来拷贝对象,一种是切片,另外一种是工厂方法.然后使用id函数来看看它们的标 ...

  4. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  5. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

  6. 开启子进程的两种方式、进程间内存空间隔离、进程对象的方法或属性详解

    1.操作系统(推荐查看书籍:现代操作系统)     操作系统是位于计算机硬件与软件之间的控制程序     作用:         1.将硬件的复杂操作封装成简单的接口,给用户或者应用程序使用      ...

  7. php的 静态变量,PHP之static静态变量详解

    在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...

  8. Java static静态关键字详解(public、 private、 volatile)

    文章目录 前言 static要解决什么问题? 格式 特点 static静态变量 静态变量和实例变量的区别 static静态方法 static应用场景 static 与volatile static如何 ...

  9. php之static静态变量详解

    php之static静态变量详解 一.总结 把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期. 把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围. 二.php之sta ...

  10. (35)System Verilog类静态变量详解

    (35)System Verilog类静态变量详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog类静态变量详解 5)结语 1.2 F ...

最新文章

  1. struts的DevMode模式
  2. Python---Pickle模块
  3. 打开 谷歌浏览器exe_python使用selenium调用谷歌浏览器打开指定网页
  4. 矩形脉冲信号的_IQ信号的解调学习
  5. access vba 常量数组赋值_聊聊 VBA 数组的那些坑
  6. 大智慧找不到服务器,【图】大智慧官方居然没有全推服务器请老师解决_股票软件,股票指标,炒股,股票论坛,选股公式_股票软件技术交流论坛_理想论坛 - 股票论坛...
  7. 1、数据结构及算法绪论
  8. ODP.NET连接池性能计数器
  9. “我爱淘”冲刺阶段Scrum站立会议3
  10. HTTP Status 500 - /dologin.jsp (line: 27, column: 3) Expecting jsp:param standard action with nam
  11. TFTP软件测试自学,tftp
  12. 最新消息2022年广西最新消防设施操作员模拟题库及答案
  13. 国庆不出京!沉浸式high玩清凉谷
  14. c语言offset函数,offset偏移量 offset函数怎么用,详细一点…
  15. Python编写手机App————kivy
  16. 用户数据为什么那么大_为什么那么多用户声讨高德地图?
  17. 2010 年 博文汇总
  18. P1423 小玉在游泳 NOIP python题解
  19. OpenStack入门以及一些资料之(零,nova计算)
  20. 房价预测Python

热门文章

  1. confluence安装_Hive安装
  2. 互联网医院 2020年突出成就_资讯丨2020中国医院互联网影响力排行榜
  3. 后端系统开发之白名单机制
  4. LogViewer超大文本浏览工具
  5. 【Finish】Python Day 2
  6. 【django之权限组件】
  7. “/”和“\\”和feof();
  8. JQ中的方法、事件及动画
  9. JAX-RS开发 hello world
  10. poj 3608 旋转卡壳求不相交凸包最近距离;