Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于C++;我应该什么时候使用它们?_C++_Header Files - Fatal编程技术网

C++ 关于C++;我应该什么时候使用它们?

C++ 关于C++;我应该什么时候使用它们?,c++,header-files,C++,Header Files,关于C++中头文件的问题:我应该在什么时候使用它们。如果我写的是小程序,我应该创建头文件还是在.cpp文件中声明我的类?什么是好的实践?如果你能提供相关文章的链接,那就好了。我找不到好的头文件。头文件总是一个好主意,但严格来说,你不需要它们。特别是在使用多个.cpp文件时,强烈建议使用它们 我在“始终使用它们”之前使用的规则是:任何可以从其他cpp文件访问其函数的cpp都应该使用头文件“导出”函数 最佳实践:始终使用头文件。头文件始终是一个好主意,但严格来说,您不需要它们。特别是在使用多个.cp

关于C++中头文件的问题:我应该在什么时候使用它们。如果我写的是小程序,我应该创建头文件还是在.cpp文件中声明我的类?什么是好的实践?如果你能提供相关文章的链接,那就好了。我找不到好的头文件。

头文件总是一个好主意,但严格来说,你不需要它们。特别是在使用多个.cpp文件时,强烈建议使用它们

我在“始终使用它们”之前使用的规则是:任何可以从其他cpp文件访问其函数的cpp都应该使用头文件“导出”函数


最佳实践:始终使用头文件。

头文件始终是一个好主意,但严格来说,您不需要它们。特别是在使用多个.cpp文件时,强烈建议使用它们

我在“始终使用它们”之前使用的规则是:任何可以从其他cpp文件访问其函数的cpp都应该使用头文件“导出”函数


最佳实践:始终使用头文件。

应该使用头文件的另一个原因
分发二进制文件时。您可以向客户端提供头文件和dll文件。

使用头文件的另一个原因
分发二进制文件时。您可以向客户端提供头文件和dll文件。

当您需要在多个源文件之间共享信息时,请使用头文件。小心使用的头文件将确保定义某些功能的文件与使用该功能的其他文件之间的一致性

当程序由单个(源)文件组成时,不需要创建头文件。当一个程序需要多个源文件(比如两个源文件)时,两个文件之间必须至少有一个函数或变量“共享”(因为如果没有,其中一个文件将是冗余的)。您应该有一个标题来描述共享函数或变量,以便生产者和消费者就公共功能达成一致

由此推论,标题不应描述功能消费者不需要的任何内容。仅仅因为实现需要使用第二个头,不应该让使用者包含它。如果第二个头提供了接口中使用的定义,那么它确实应该包含在公共头中

好吧,有很多废话。一个具体的例子:

资料来源1.h source1.cpp program.cpp
表面上看,您可以修改
source1.h
,使其包含
,但这将是一个糟糕的举动。定义的函数接口
somefunc()
,不依赖于
,因此当需要在多个源文件之间共享信息时,标头不应包括

使用头文件。小心使用的头文件将确保定义某些功能的文件与使用该功能的其他文件之间的一致性

当程序由单个(源)文件组成时,不需要创建头文件。当一个程序需要多个源文件(比如两个源文件)时,两个文件之间必须至少有一个函数或变量“共享”(因为如果没有,其中一个文件将是冗余的)。您应该有一个标题来描述共享函数或变量,以便生产者和消费者就公共功能达成一致

由此推论,标题不应描述功能消费者不需要的任何内容。仅仅因为实现需要使用第二个头,不应该让使用者包含它。如果第二个头提供了接口中使用的定义,那么它确实应该包含在公共头中

好吧,有很多废话。一个具体的例子:

资料来源1.h source1.cpp program.cpp 表面上看,您可以修改
source1.h
,使其包含
,但这将是一个糟糕的举动。定义的函数接口
somefunc()
,不依赖于
,因此标头不应包含

请尝试我们的。或者试着写一些代码,看看你能走多远!试试我们的。或者试着写一些代码,看看你能走多远!
extern int somefunc(int, int);
#include "source1.h"

int somefunc(int a, int b)
{
    return a + b;
}
#include <iostream>
#include "source1.h"
using namespace std;

int main()
{
    int x = somefunc(1, 3);
    cout << "somefunc(1, 3) is " << x << endl;
}
#include "source1.h"
#include <iostream>
using namespace std;

int somefunc(int a, int b)
{
    cout << "a = " << a << ", b = " << b << endl;
    int x = a + b;
    cout << "x = " << x << endl;
    return x;
}