CPPLearningManual

在 C++ 中,函数声明和定义是非常重要的概念。

函数声明(Function Declaration)

函数声明也称为函数原型,它告诉编译器函数的名称、返回类型以及参数的类型和数量。函数声明通常出现在头文件(.h)或在使用该函数之前的代码部分。

函数声明的语法如下:

return_type function_name(parameter_type1 parameter_name1, parameter_type2 parameter_name2,...);

例如:

int add(int a, int b);  // 函数声明

这里,int 是返回类型,add 是函数名,int aint b 是参数。

函数定义(Function Definition)

函数定义包含函数的具体实现,即函数体。它不仅包含函数声明中的信息,还包括函数内部的具体执行逻辑。

函数定义的语法如下:

return_type function_name(parameter_type1 parameter_name1, parameter_type2 parameter_name2,...) {
    // 函数体,包含具体的执行语句
    // 返回语句(如果函数有返回值)
}

例如:

int add(int a, int b) {  // 函数定义
    return a + b;
}

需要注意以下几点:

  1. 函数声明和定义中的返回类型、函数名和参数类型及数量必须完全一致。

  2. 函数可以在多个源文件中被声明,但只能在一个源文件中被定义。

  3. 在使用函数之前,必须先进行声明。如果函数的定义在使用之前,那么可以省略声明。

  4. 如果函数没有返回值,返回类型应写为 void

头文件中定义函数

通常,我们会在头文件(.h 或.hpp 文件)中声明函数,并在对应的源文件(.cpp 文件)中定义函数。这样做的主要目的是为了提高代码的组织性和可维护性,以及避免重复定义的问题。

然而,如果您的函数比较简单,或者在特定的情况下,您也可以直接在使用该函数的源文件中声明并定义函数。

例如:

#include <iostream>

// 直接在当前源文件中声明并定义函数
void myFunction() {
    std::cout << "Hello from myFunction!" << std::endl;
}

int main() {
    myFunction();
    return 0;
}

但对于较大的项目和复杂的代码结构,一般遵循将声明放在头文件,定义放在源文件的原则。