ere*_*eOn 10 c++ linker definition
在我阅读这个问题的接受答案时,我有以下问题:
通常,方法在头文件(.hpp或其他)中定义,并在源文件(.cpp或其他)中实现.
包含"源文件"(#include <source_file.cpp>)的不良做法的主要原因之一是其方法实现将被复制,从而导致链接错误.
当一个人写道:
#ifndef BRITNEYSPEARS_HPP
#define BRITNEYSPEARS_HPP
class BritneySpears
{
public:
BritneySpears() {}; // Here the constructor has implementation.
};
#endif /* BRITNEYSPEARS_HPP */
Run Code Online (Sandbox Code Playgroud)
他正在给出构造函数的实现(这里是一个"空"实现,但仍然).
但是为什么然后多次包含这个头文件(也就是在不同的源文件上)不会在链接时生成"重复定义"错误?
Mik*_*our 13
内联函数是"一个定义规则"的例外:允许您在多个编译单元中具有相同的实现.如果函数inline在类定义中声明或实现,则它们是内联函数.