Advertisement

C++中静态对象需要注意的问题

阅读量:

无论何时设计一个包含静态变量的函数,都需要注意多线程问题

当程序从main主函数退出或标准C库函数exit被激活时, 静态对象(包括局部和全局静态对象)才会触发其析构功能. 通常情况下, main主循环结束后会直接激活exit以终止整个程序流程. 这就造成了如果在解析构造过程中内部再次激活exit就会导致无限循环的问题. 相反地, 如果采用标准C库函數abort来进行进程终止操作的话就不会引發任何靜态物件(无论是局部还是 globa) 的 析構操作.

  1. 可以通过标准C库函数atexit来配置程序退出时(当主函数退出时)应执行的具体操作(任务)。在这种情况下(场景下),预先通过atexit()注册的函数会在所有对象的析构函数调用之前(时机上)负责执行任务(职责)。

4.在构造过程中遵循逆序进行静态对象的销毁,在很多方面与普通对象的销毁方式相同

  1. 静态全局变量通常是内部链接的一种形式,在这种机制下能够将一个对象或值在多个地方引用而不产生冲突。通常情况下,在头文件中定义的名字(如常量、内联函数等)默认会采用这种内部链接的方式以避免引用时可能出现的冲突问题。

在C语言中,默认情况下变量被视为外部链接。而在C++语言中,默认情况下变量被视为内部链接。若希望将const类型的变量声明为外部链接,则需要在其前添加关键字extern。需要注意的是,在进行const变量的声

全部评论 (0)

还没有任何评论哟~