c++ - 编译器和链接器如何处理类和函数

标签 c++ templates linker compilationunit

谁能帮我理解,为什么我可以在两个不同的编译单元中使用相同的类而不会出现链接器错误,但在不同的编译单元中却不能使用相同的函数?

非常感谢。

最佳答案

由于其方法(包括特殊成员,如默认 ctor 或 operator=)具有相同名称的一个定义错误,两个组合单元中的同一类可能会导致程序格式错误。

我的特殊成员函数是隐式内联定义的,所以我们很容易得到不需要诊断的格式错误的程序。

因此我的内存损坏了;两个具有相同名称和不同内存布局的矩阵类。

关于c++ - 编译器和链接器如何处理类和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47377600/

相关文章:

c++ - #define 在模式之后有两个标记

c++ - (修订)prefix++和postfix++有什么区别?

c++ - 将多种(不同)类型的参数传递给模板函数

c - 如何获取变量作为链接器映射文件的位置?

c++ - 奇怪的链接器错误

c++ - 如何使用 memset 初始化动态二维数组?

c++ - 将未知数量的由空格分隔的整数读入每行一个 vector

c++ - 如何使用 `constexpr`兼容实例化创建这种类型的C++模板数组集合类

c++ - 具有模板化静态成员函数的模板化类与实现中的原型(prototype)不匹配

c++ - 如何在 C++ 中通过链接器进行模拟测试