两个c++程序,应该有同样的问题。但是1个报出这个问题的error,另一个却没有。这是为什么?

新手上路,请多包涵

碰到了和stackoverflow上类似的问题,stackoverflow上的这个问题。其中第2个复杂的程序,如何修改才能够使它报出和第1个简单的程序类似的错误?

阅读 1.5k
1 个回答

对于第一个错误,应该是很清晰的,在头文件里面定义了静态变量,所以在多次 include 的时候导致了重复定义。
至于说为什么第2个复杂的程序不报错,这里涉及到了一个相对比较小众的 C++模板的特性——编译器保证具有相同模板参数的模板只实例化一次。也就是说,具有相同模板参数的 class 中的静态变量只被实例化一次。所以第二个例子可以编译通过。
至于说让第2个程序报类似的错误,你只要不用模板就会有类似的错误。

推荐问题