真正的 "object-functions" 只存在于头文件中?

Real "object-functions" only in header files?

首先声明我来自Java。

所以我昨天研究了C++ OO编程,我对头文件中的函数有点困惑。

在我看来,对象是在那里定义的,以及所有只属于对象的函数,而不是静态的class。 但是由于我习惯于初始化一个包含许多字段的对象,然后调用使用这些字段做事的函数并尽可能避免使用静态函数,结果是一个完全垃圾的头文件,使 class 几乎是多余的。 我是否遗漏了什么,或者 C++ OOP 真的只是关于数据对象吗?

据我所知,确实应该使用cpp文件,但在其功能中,所有需要的东西都应该通过参数传递,即使是相同的对象class。

这里有两个定义 class 方法的备选方案,第一个在头文件中,第二个在头文件和 cpp 文件之间拆分。

// *** in the header file only ***
class X
{
    void some_function() { /* some code */ }
};

// *** split between the header file and a cpp file ***

// header file
class X
{
    void some_function(); // declaration only
};

// cpp file
#include "header_file.h"

void X::some_function() // definition
{
    /* some code */
}