header / cpp文件

时间:2012-09-27 21:53:09

标签: c++ header

我找不到头文件的用途。 为什么我们需要它?在C#中没有标题,你只需要写“使用”,就是这样。

另外,头文件和cpp文件有什么不同?

感谢。

4 个答案:

答案 0 :(得分:3)

回答“头文件的目的是什么”部分比没有人谈过,将方法定义与实际实现分离允许编译器在对实现进行更改时不重新编译项目中的所有文件一种方法。

这是因为调用它的文件仍然以相同的方式调用它(这在头文件中定义),如果实现更改(在cpp文件中),编译器只编译已更改的文件并执行再次链接,从而节省了大量项目的时间。

答案 1 :(得分:1)

看一下下面的article,它解释了c#编译器的工作原理以及它不需要头文件的原因。

答案 2 :(得分:0)

AFAIK没有区别。您总是可以编写没有标题的代码:

<强> a.cpp

class A {
public:
   void foo();
};

void A::foo() {}

<强> b.cpp

class A {
public:
   void foo();
};

int main() { A a; a.foo(); }

然而,使用头文件进行常见定义会更容易,更方便并产生更少的错误,否则必须在每个翻译单元(.cpp)中编写:

<强> A.H

class A {
public:
   void foo();
};

<强> a.cpp

#include "a.h"
void A::foo() {}

<强> b.cpp

#include "a.h"

int main() { A a; a.foo(); }

当然你只编译.cpp文件。但是标题有“预编译”。


为什么C#不需要标题?我完全不同地看待它。在C#中,您只有标题,而using只相当于C ++ include。但这只是我个人的意见:D

答案 3 :(得分:0)

您需要更好地了解.NET,C#和IL。它不像“使用”指令那么简单。 IL充满了循环依赖问题,根据我的最新知识,微软正在尝试一些聪明的黑客来解决循环依赖问题,但没有一个是完美的。

也许当你毕业于大项目时,你会遇到循环依赖问题。直到那时,请记住,CPP / HPP的区别有助于避免循环依赖......