静态对象
来源:互联网 发布:淘宝手机秒杀技巧 编辑:程序博客网 时间:2024/06/01 23:34
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; // 在函数范围之内的一个静态对象
...
}- 静态对象
- 静态对象
- 静态对象
- 静态变量 静态对象 静态函数
- 静态对象如何初始化?
- 非局部静态对象
- 静态对象2
- 面向对象,封装,静态
- 局部静态对象
- 面向对象静态要点
- 面向对象_静态
- 再认识局部静态对象
- 面向对象-关于静态
- c++静态对象
- c++静态对象
- 面向对象_静态
- C++ 静态对象
- 静态对象的初始化
- Linux-网络桥接和链路聚合
- Mqtt精髓系列之保留消息Retained Messages
- 网络桥接
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- LINUX系统网络桥接
- 静态对象
- Spark On YARN内存和CPU分配
- HTML5新特性 canvas 画布
- linux下面显示所有正在运行的线程
- 底部菜单栏:FragmentTabHost
- CentOS7使用firewalld打开关闭防火墙与端口
- Ubuntu 查看服务及其对应的端口号
- Win10系统下安装MDK5,出现“The ARM C/C++ COMPILER已停止工作”解决方案
- SQLite3 ODBC连接串