C++ 多次执行成员功能
例如,您有这样的情况: 1) 包含某些成员函数(def.h)的类定义的头文件 2) 该标头包含在.cpp文件中,其名称与驻留在单独文件夹中的名称相同 3) 该.cpp文件从def.h执行相同的函数,但方式不同 3) 然后,我们通过多次执行将该头包含到一些main.cpp和call函数中,并编译整个项目C++ 多次执行成员功能,c++,C++,例如,您有这样的情况: 1) 包含某些成员函数(def.h)的类定义的头文件 2) 该标头包含在.cpp文件中,其名称与驻留在单独文件夹中的名称相同 3) 该.cpp文件从def.h执行相同的函数,但方式不同 3) 然后,我们通过多次执行将该头包含到一些main.cpp和call函数中,并编译整个项目 问题:它会编译没有错误吗?将选择什么功能实现 在两个不同的位置定义函数违反了 odr使用的每个非内联函数或变量(见下文)的一个且只有一个定义需要出现在整个程序中(包括任何标准库和用户定义库)编译器
问题:它会编译没有错误吗?将选择什么功能实现 在两个不同的位置定义函数违反了 odr使用的每个非内联函数或变量(见下文)的一个且只有一个定义需要出现在整个程序中(包括任何标准库和用户定义库)编译器不需要诊断此冲突,但违反此冲突的程序的行为未定义。 要有明确的行为,您应该:
- 只链接最终程序中的一个定义
- 改用
- 改用多态性/继承
- 只链接最终程序中的一个定义
- 改用
- 改用多态性/继承