C++ 在c+中定义类中的方法时为什么不存在多个定义错误+;?

C++ 在c+中定义类中的方法时为什么不存在多个定义错误+;?,c++,definition,C++,Definition,我有一节课用身体测试方法 class Object { public: Object(){ } virtual ~Object(){ } void test(){ } }; 我将这个object.h包含在2个cpp文件中。为什么两个cpp文件中的函数Object::test都没有多定义错误(包含后) 我知道一个具有完整主体的函数是一个定义而不是声明,所以我认为应该有多个定义错误 是否有官方文章谈论? < P>根据C++标准(7.1.2函数说

我有一节课用身体测试方法

class Object {
public:
    Object(){

    }
    virtual ~Object(){

    }

    void test(){
    }
};
我将这个
object.h
包含在2个cpp文件中。为什么两个cpp文件中的函数
Object::test
都没有多定义错误(包含后)

我知道一个具有完整主体的函数是一个定义而不是声明,所以我认为应该有多个定义错误


是否有官方文章谈论?

< P>根据C++标准(7.1.2函数说明符)

3类定义中定义的函数是内联函数

4应在每个翻译单元中定义内联函数 它是odr使用的,并且在 每例(3.2)

名称显示为潜在计算表达式的函数是 如果odr是唯一的查找结果或选定的 重载函数集(3.4,13.3,13.4),除非它是纯函数 虚拟函数及其名称未显式限定

其中ODR是一个定义规则的缩写。
简单地说,函数参与计算的表达式时使用odr。

这是因为test()是。类内函数定义是隐式
内联的
inline
意思是“可以有多个定义,只要所有定义都相同”。不能在Andy的陈述中添加任何其他内容。不清楚它在说什么:(什么是odr-used@NayanaAdassuriya这里有一个很好的例子。