C++ 的一些语言特性使之必须由编译器和链接器共同支持才能完成工作。最主要的有两个方面,一个是C++ 的重复代码消除,还有一个就是全局构造与析构。...重复代码消除
C++编译器在很多时候会产生重复的代码,比如模板( Templates)、外部内联函数(Extern Inline Function)和虚函数表( Virtual Function Table...最简单的情况就拿模板来说,模板从本质上来讲很像宏,当模板在·个编译单元里被实例化时,它并不知道自己是否在别的编译单元也被实例化了。...这样,当别的编译单元也以int或foat类型实例化该模板函数后,也会生成同样的名字,这样链接器在最终链接的时候可以区分这些相同的模板实例段,然后将它们合并入最后的代码段。...函数调用方式,比如参数入栈顺序、返回值如何保持等
堆栈的分布方式,比如参数和局部变量在堆栈里的位置,参数传递方法等。