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

why not exist mutiple definition error when define method in class in c++?

本文关键字:定义 不存在 错误 为什么 c++ 方法      更新时间:2023-10-16

我有一个带有body的测试方法的类;

class Object {
public:
    Object(){
    }
    virtual ~Object(){
    }
    void test(){
    }
};

我将此object.h包含在2个cpp文件中。为什么两个cpp文件中可用的函数Object::test(包含后)没有多定义错误?

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

有关于它的官方文章吗?

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

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

4内联函数应在它是odr使用的,在每种情况(3.2)。

名称显示为潜在求值表达式的函数为如果它是唯一的查找结果或一组重载函数(3.4、13.3、13.4),除非它是纯函数虚拟函数及其名称未明确限定。

其中ODR是一个定义规则的缩写。简单地说,当函数参与被求值的表达式时,它就是odr。