真正的 "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 */
}
首先声明我来自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 */
}