在c++中定义类中的方法时,为什么不存在多个定义错误呢
why not exist mutiple definition error when define method in class in c++?
我有一个带有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。
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- 当类定义不可见时捕获异常
- g++ 说函数不存在,即使包含正确的标头
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- C++ 尝试在不存在的构造函数中引用已删除的函数(使用 rapidJson)
- 查找第一个数组中不存在的元素
- 标记未定义的颜色,并且颜色匹配系统中不存在样品
- 为什么C 11将不存在的值定义为默认值
- 奇怪的未定义函数引用,函数调用C++不存在
- Qt - 无法分配给不存在的属性(自定义C++类)
- 在c++中定义类中的方法时,为什么不存在多个定义错误呢
- 我可以存储指向不存在的数据的指针而不调用未定义的行为吗?
- 定义仅具有标头的类 - 找不到不存在的 cpp
- 当运行时库不存在时显示(自定义"required"错误?
- 在Mac OS X 10.6.8的gcc-4.2.1中不存在strnlen -如何定义它
- Visual C++ 不存在从"myClass1"到"myClass1"的合适用户定义转换
- 自定义控件发布属性不存在
- 映射和节点,错误智能感知:不存在从"const std::pair<const int, double>"到"Node"的合适用户定义转换
- 我收到一个未定义的引用错误,指向不存在的东西