是指对象从创建到被销毁的整个过程。
对象的创建有三种方式,它们的生命周期各不相同:
1、通过定义变量创建对象。 这种情况下变量的作用域,决定了对象的生命周期。 进入变量作用域,对象被创建,退出变量作用域,对象被销毁。 global变量,在进入main之前被创建,退出main之后,全局对象才会被销毁。 静态变量作用域不是整个程序,但是存储在 全局/静态数据区。因此静态变量第一次进入作用域时被创建,直到程序退出时被销毁。
#include <stdio.h>
#include <stdlib.h>
class A {
public:
A() {printf("A created.\n"); }
~A() {printf("A destroyed.\n");}
};
class B {
public:
B() {printf("B created.\n");}
~B() {printf("B destroyed\n");}
};
A globalA;
int foo(void)
{
printf("\nfoo()---->\n");
A localA;
static B localB;
printf("foo() <----\n");
return 0;
}
int main(void) {
printf("main()---->\n");
foo();
foo();
printf("\nmain()<----");
return 0;
}
输出结果为:
A created.
main()---->
foo()---->
A created.
B created.
foo()<----
A destroyed. // 退出函数之后,局部对象才会被销毁。
foo()---->
A created. // 第二次进入,静态变量不会被再次初始化。仅在第一次进入作用域时初始化
foo()<----
A destroyed.
main()<----
B destroyed. // 程序退出时,静态变量才会被销毁。
A destroyed. // 程序退出后,全局对象被销毁。。。 是先销毁静态变量,再销毁全局变量吗?还是各个编译器会有不同的实现?
中间临时变量的创建和销毁(通常是隐式的),虽然生命周期很短,不易被开发人员察觉,但是常常是造成程序性能下降的瓶颈。
posted on 2009-09-05 15:26
thinke365 阅读(268)
评论(0) 编辑 收藏 引用 所属分类:
性能优化