C++ C++;:在多个文件中定义类

C++ C++;:在多个文件中定义类,c++,one-definition-rule,C++,One Definition Rule,根据: 在整个程序中,对象或非内联函数不能具有 不止一个定义;如果使用对象或函数,则必须 只有一个定义 以下是我正在尝试编译的文件: A.cpp 问候 #include <iostream> void greet() { std::cout << "Hello World!" << std::endl; } #include <iostream> class Greet { public: void greet() {

根据:

在整个程序中,对象或非内联函数不能具有 不止一个定义;如果使用对象或函数,则必须 只有一个定义

以下是我正在尝试编译的文件:

A.cpp

问候

#include <iostream>

void greet()
{
    std::cout << "Hello World!" << std::endl;
}
#include <iostream>

class Greet
{
public:
    void greet()
    {
        std::cout << "Hello World!" << std::endl;
    }
};
但是当我在类中放置
greet()
函数时。代码编译得很好,并给出输出
helloworld

A.cpp

问候

#include <iostream>

void greet()
{
    std::cout << "Hello World!" << std::endl;
}
#include <iostream>

class Greet
{
public:
    void greet()
    {
        std::cout << "Hello World!" << std::endl;
    }
};
#包括
班级问候
{
公众:
无效问候()
{
标准::cout
但是当我把
greet()
函数放在一个类中时,代码编译得很好,并给出输出
helloworld!

当在类定义中定义成员函数时,会隐含
inline
。非成员函数则不是这样

从:

成员函数可以在其类定义中定义([dcl.fct.def]),在这种情况下,它是一个内联成员函数([dcl.fct.spec]),也可以在其类定义之外定义(如果它已经声明但未在其类定义中定义)


因此,如果我在类中定义每个函数作为成员函数,那么我就不会有任何链接问题了吗?那么,为什么建议将C++类声明和定义分离为单独的头文件和CPP文件?ader文件——封装的基本原则。我们为什么不更改头文件?我无法理解它与封装的关系。@AdityaVerma,这不是回答这个问题的正确地方。请浏览网络,找到并阅读一本关于软件工程的好书,或者在这里发布一个问题,这是分离的基本原理将类划分为头文件和源文件:
#include <iostream>
#include "Greet.h"

int main()
{
    Greet G;
    G.greet();

    std::cin.get();
}
#include "Greet.h"
#include <iostream>

class Greet
{
public:
    void greet()
    {
        std::cout << "Hello World!" << std::endl;
    }
};