c ++中的class(cpp文件和文件)

时间:2012-11-12 10:03:22

标签: c++ class

创建和定义类(在“h文件”中)之后。 除了“h file”(属于该类)之外,我如何决定创建(或不创建)“cpp文件”(仅适用于该类)?

3 个答案:

答案 0 :(得分:2)

这是一个让你前进的小例子。


这是Foo的头文件。我们称之为“foo.h”

#pragma once
#ifndef FOO_H
#define FOO_H

class Foo{
public:
    void function();
protected:
private:
};
#endif

这是Foo的源文件。我们称之为“foo.cpp”

#include "foo.h"
void Foo::function(){
    // ... implement ...
    return;
}

将它们编译在一起,我们可以创建一个目标文件。我们称之为“foo.o” 如果您链接“foo.o”,则可以在程序中使用您的课程 示例:

#include "foo.h"
int main(){

    Foo foo;
    foo.function();

    return 0;
}

答案 1 :(得分:1)

h文件是描述符文件,它描述了函数/类的签名,因此其他cpp文件中的其他类可以使用它。

您需要将h文件视为合同。你宣布有义务。

稍后,当您决定实施cpp时,您将履行义务。

其他类/ cpp文件可以单独依赖您的义务,假设您还将在cpp中实现义务。

例如:

  1. 您创建一个.h文件“myClassA.h”并使用名为myClassA.SayHello()的成员方法声明一个名为myClassA的类
  2. 你将myClassA.h包含在你创建myClassB.cpp的另一个类中,这样myClassB知道myClassA有一个名为SayHello()的方法,它可以调用它。
  3. 如果你不包含myClassA.h而你试图在myClassB.cpp中调用myClassA.SayHello(),你的编译器就会收到错误,因为myClassB并不“知道”myClassA。
  4. 如果您确实包含了h文件,但没有在myClassA.cpp中实际创建和实现myClassA,则会收到编译错误,因为未找到任何实现。

答案 2 :(得分:0)

最佳做法是分离头文件和实现文件,以便在头文件.h中定义类并在.cpp文件中实现它,这将帮助您跟踪和调试错误并显示干净的代码,

请注意,在模板类中,必须在单独的头文件中定义它,以便通过将模板与普通类分开来保持代码结构良好和干净