C++ “真正的”;“目标函数”;仅在头文件中?

C++ “真正的”;“目标函数”;仅在头文件中?,c++,function,oop,object,static,C++,Function,Oop,Object,Static,首先让我说我来自爪哇 我昨天在C++编程中挖掘了,我对头文件中的函数有点困惑。 在我看来,对象以及所有只属于对象的函数都是在这里定义的,而不是静态类。 但是,由于我习惯于初始化一个包含许多字段的对象,然后调用使用这些字段执行操作的函数,并尽可能避免使用静态函数,因此结果是一个完全垃圾的头文件,使得类的.cpp表示几乎是多余的。 我错过了什么东西还是C++ OOP真正的数据对象?< /P> 据我所知,确实应该使用cpp文件,但在其功能中,所需的一切都应该通过参数传递,即使是同一类的对象。这里有两种

首先让我说我来自爪哇

<>我昨天在C++编程中挖掘了,我对头文件中的函数有点困惑。

在我看来,对象以及所有只属于对象的函数都是在这里定义的,而不是静态类。 但是,由于我习惯于初始化一个包含许多字段的对象,然后调用使用这些字段执行操作的函数,并尽可能避免使用静态函数,因此结果是一个完全垃圾的头文件,使得类的.cpp表示几乎是多余的。 我错过了什么东西还是C++ OOP真正的数据对象?< /P>
据我所知,确实应该使用cpp文件,但在其功能中,所需的一切都应该通过参数传递,即使是同一类的对象。

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

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

如果您不想将函数(任何类型的)放在头文件中,那么就不要将它们放在那里。这不是强制性的,只是我谦虚的结论@john有没有办法把这些函数放到cpp文件中?你能详细说明一下吗?找不到一个合适的资源(即使我确信情况确实如此),一般来说,来到C++的java程序员之所以会挣扎是因为他们试图将java中的概念应用到C++。尽管在语法上有相似之处,但它们实际上是完全不同的语言。你可能需要一本好书。@pikkuez你说的是类函数(又称方法)?@pikkuez我来写一个简单的例子。还要注意的是,没有什么可以阻止您将整个类放入cpp文件中。头文件和CPP文件是C++构建系统的伪品,它们与对象或类无关。如果你不想把任何类型的函数放在头文件中,那么就不要把它们放在那里。这不是强制性的,只是我谦虚的结论@john有没有办法把这些函数放到cpp文件中?你能详细说明一下吗?找不到一个合适的资源(即使我确信情况确实如此),一般来说,来到C++的java程序员之所以会挣扎是因为他们试图将java中的概念应用到C++。尽管在语法上有相似之处,但它们实际上是完全不同的语言。你可能需要一本好书。@pikkuez你说的是类函数(又称方法)?@pikkuez我来写一个简单的例子。还要注意的是,没有什么可以阻止您将整个类放入cpp文件中。头文件和CPP文件是C++构建系统的伪品,它们与对象或类无关。现在我明白了,我正在寻找的东西,非常感谢,谢谢你们花时间!我只是想,如果不是静态的,在.cpp类中,字段通常是不可访问的。啊,现在我明白了,这正是我想要的,非常感谢,谢谢你花时间!我只是在想,如果不是静态的,字段在.cpp类中通常是不可访问的。