当编译器遇到如下定义:
Point global;
观念上Point的 trivial construction 和 destruction 都会被产生和调用,事实上,这些 trival members 要么没被产生,要么没被调用。
在C中,global被视为一个“临时性的定义”,因为他没有显示化的初始化操作,一个“临时性的定义”可以在程序中发生多次,那些实例会被链接器折叠起来,只留下一个单独的实例,放在程序 data segment 中的BSS段;C++并不支持“临时性的定义”,这是因为class构造行为的隐式应用之故,因此global在C++中被视为完全定义(它会阻止第二个或更多的定义)。
C和C++一个差异在于,BSS data segment 在C++中相对地不重要,C++所有的全局对象都被以“初始化过的数据”来对待