gpt4 book ai didi

c++ - C 头文件和源文件

转载 作者:行者123 更新时间:2023-11-30 04:20:34 25 4
gpt4 key购买 nike

<分区>

我是一名学生程序员,通过“Accelerated C++”这本书学习我的第一语言。我正处于作者解释头文件和包含函数的源文件的位置。在书中提供的练习中,作者提供了包含函数定义的头文件,但由于源文件中也有函数定义,因此显得多余。在这种情况下,在进行 C++ 编程时头文件有什么意义?

示例:头文件。

#ifndef MEDIAN_H
#define MEDIAN_H

#include <vector>
double median(std::vector<double>);

#endif // MEDIAN_H

然后源文件包含确定成绩中位数的函数:

// source file for the `median' function
#include <algorithm> // to get the declaration of `sort'
#include <stdexcept> // to get the declaration of `domain_error'
#include <vector> // to get the declaration of `vector'

using std::domain_error; using std::sort; using std::vector;

#include "median.h"

// compute the median of a `vector<double>'
// note that calling this function copies the entire argument `vector'
double median(vector<double> vec)
{
#ifdef _MSC_VER
typedef std::vector<double>::size_type vec_sz;
#else
typedef vector<double>::size_type vec_sz;
#endif

vec_sz size = vec.size();
if (size == 0)
throw domain_error("median of an empty vector");

sort(vec.begin(), vec.end());

vec_sz mid = size/2;

return size % 2 == 0 ? (vec[mid] + vec[mid-1]) / 2 : vec[mid];
}

median.h 被复制到中值函数源文件中,即使源文件已经有定义 vector<double> vec这本书解释说它是无害的,实际上是一个好主意。但我只是想更好地理解这种冗余的原因。任何解释都会很棒!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com