全局对象的构造函数的调用时机???
时间:2010-06-13 来源:sinodragon21
全局对象(同时也必然是个静态对象)
由于全局对象实现语任何“函数活动范围”之外,显然没有地方来安置这样一个构造函数调用操作。全局对象的 构造函数调用操作必须靠startup代码帮忙。startup代码是什么?是更早于程序进入点(main 或WinMain)执行起来的码,由C++ 编译器提供,被联结到你的程序中。startup 码可能做些像函数库初始化、进程信息设立、I/O stream 产生等等动作,以及对static 对象的初始化动作(也就是调用其构造式)。当编译器编译你的程序,发现一个静态对象,它会把这个对象加到一个串行之中。更精确地说则是,编译器不只是加上 此静态对象,它还加上一个指针,指向对象之构造式及
其参数(如果有的话)。把控制权交给程序进入点(main 或WinMain)之前,startup 码
会快速在该串行上移动,调用所有登记有案的构造式并使用登记有案的参数,于是就初
始化了你的 静态对象。
由于全局对象实现语任何“函数活动范围”之外,显然没有地方来安置这样一个构造函数调用操作。全局对象的 构造函数调用操作必须靠startup代码帮忙。startup代码是什么?是更早于程序进入点(main 或WinMain)执行起来的码,由C++ 编译器提供,被联结到你的程序中。startup 码可能做些像函数库初始化、进程信息设立、I/O stream 产生等等动作,以及对static 对象的初始化动作(也就是调用其构造式)。当编译器编译你的程序,发现一个静态对象,它会把这个对象加到一个串行之中。更精确地说则是,编译器不只是加上 此静态对象,它还加上一个指针,指向对象之构造式及
其参数(如果有的话)。把控制权交给程序进入点(main 或WinMain)之前,startup 码
会快速在该串行上移动,调用所有登记有案的构造式并使用登记有案的参数,于是就初
始化了你的 静态对象。
相关阅读 更多 +