用c ++包含文件?

时间:2011-02-22 02:47:01

标签: c++ file include

我想知道如何在C ++中包含文件......我正在看很多不同的东西而无法理解它。我只想包含其他功能或方法,或者你打电话给它。

我知道你需要像#include“filename.cpp”;但是我不知道如何使用来自filename.cpp或.h或w / e的东西来调用它。

谢谢,如果你能解释一下,我知道java的顺便说一下。 (它似乎与java完全不同。)

4 个答案:

答案 0 :(得分:2)

包含文件用于描述应用程序的其他元素要使用的接口或类。实质上,类的描述包含在头文件(.h)中。该类的实现包含在源(.cpp)文件中。例如:

您的头文件如下所示:

// MyClass.h
class MyClass {
public:
    MyClass();
    void Method1();
    ...
};

您的实施文件如下所示:

// MyClass.cpp
MyClass::MyClass() {
    // implementation details
}

void MyClass::Method1() {
    // implementation details
}

现在任何需要使用MyClass的人都会以下列方式包含MyClass.h:

#include "MyClass.h"

希望这有帮助。

答案 1 :(得分:2)

通常,在头文件中声明和源文件中的实现。虽然在模板的情况下存在例外情况。请记住,只编译源文件。因此,编译器必须知道源文件中存在的符号。现在举个例子 -

<强> foo.h中

struct foo
{
    int number ;
    foo( int x );
};

<强> Foo.cpp中

现在,有一种方法在struct foo中未实现,即构造函数。如果您需要在单独的源文件中实现它,则需要#include "foo.h"。有了它,如果你继续实现它的方法,编译器不知道什么是“foo”。

#include "foo.h"

foo::foo( int x )
{
     number = x; // This can be achieved through initializer lists too.
}

在编译器阶段之前,预处理器会将foo.h的内容复制到foo.cpp。预处理后,原始foo.cpp变为 -

struct foo
{
    int number ;
    foo( int x );
};

foo::foo( int x )
{
     number = x; // This can be achieved through initializer lists too.
}

现在,源文件中定义/使用的每个方法/符号都是编译器所知道的。通常,x.h的相应源文件将为x.cpp。还要知道,每个源文件都会通过这些阶段来提供最终的可执行文件。 (预处理器 - &gt;编译器 - &gt;链接器)。希望它在某种程度上有所帮助。

答案 2 :(得分:1)

约定是仅包含标题(* .h或* .hpp)文件。这些文件通常用于定义类型和宏等。

你如何使用它真的取决于你的应用程序在做什么 - 你是相当模糊的。例如,如果您定义一个类,则通常在头文件中声明该类及其成员。方法的实际代码可以放在* .cpp文件中。

只要#include头文件,编译器就会知道这些方法需要什么语法。

答案 3 :(得分:-1)

在c ++中包含文件在标准库文件和程序员定义的文件之间有所不同。

对于我们编写的标准库:

#include <FileName>

对于我们编写的程序员定义的文件:

#include "FileDestination\FileName.extension"

请注意,没有分号。

如果您要使用的东西在命名空间内,您应该提到命名空间或使用它,使用命名空间写:

using namespace NAMESPACE_NAME;

提到命名空间而不使用它很容易,比如写:

std::cout << "Hello, World!\n";

希望这很有用!对不起我的英语不好。