C核心指南I22避免对全局对象

奇怪,13后面没有14,直接跳到22了。

理由:

复杂的初始化会导致执行顺序的不确定性。

例子:

//file1.cexternconstXx;constYy=f(x);//adx;writey//file2.cexternconstYy;constXx=g(y);//ady;writex

因为x和y在不同编译单元里,f()和g()的调用顺序不确定。其中一个函数会访问到一个未初始化的const。

注意:

在并发执行的代码中初始化顺序的问题会更加难处理。最好避免使用全局对象。

强化:

标注调用非constexpr函数的全局初始化函数

标注访问extern对象的全局初始化函数

C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。

C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。

kimim


转载请注明:http://www.aierlanlan.com/rzfs/569.html

  • 上一篇文章:
  •   
  • 下一篇文章: