首页 > 解决方案 > 真正的“对象函数”只在头文件中?

问题描述

首先让我说我来自Java。

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

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

据我所知,确实应该使用 cpp 文件,但在它的功能中,所有需要的东西都应该通过参数传递,甚至是同一个类的对象。

标签: c++functionoopobjectstatic

解决方案


这里有两种定义类方法的替代方法,第一种是在头文件中,第二种是在头文件和 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 */
}

推荐阅读