C++ 函数原型

2025 年 5 月 7 日 | 阅读 8 分钟

在 C++ 中,**函数原型** 是对函数的声明,它告知程序函数的参数数量和类型,以及函数将返回的值的类型。C++ 函数一个极其有用的方面就是函数原型。函数原型提供信息,例如参数的数量、类型以及返回值的类型,以便向编译器解释函数接口。

Function Prototype in C++

C++ 中,函数原型是函数声明,它告诉编译器函数的名称、返回类型以及其参数的数量和类型。它有助于确保在函数定义之前正确调用函数。

语法

它具有以下语法:

在这个语法中,

  • return_type: 它表示将返回的值的数据类型(例如 int、void、double 等)。
  • function_name: 它表示用于标识和调用函数的名称。
  • parameter_type: 它表示函数期望的参数类型。

例如

让我们看一下下面函数的原型

这里,

  • 返回类型: int
  • 函数名称: add
  • 参数列表: (int a1, int a2)
Function Prototype in C++

由于每个函数原型后面都有一个分号,最终也会有;就像前面的函数原型一样。

注意:函数定义不能省略参数名,而函数声明可以。

C++ 函数原型返回类型

在 C++ 中,函数的返回类型指定发送回调用程序的数据类型。如果返回类型为 void,则函数不返回任何值。它通常用于执行诸如输出打印或修改外部数据而不报告结果之类的操作。

1) Void 返回类型

C++ 中的 void 返回类型意味着函数完成了任务但未返回任何值。它非常适合执行诸如显示输出、记录数据或更新不需要调用者接收任何结果的用户界面之类的操作。

Function Prototype in C++

语法

它具有以下语法。

C++ Void 返回类型示例

让我们以一个示例来说明 C++ 中的 void 返回类型函数原型。

示例

编译并运行

输出

Hello! This is TpointTech Company

说明

该代码声明了一个具有 void 返回类型的 Display 函数,该函数使用提供的公司名称打印发票消息。在 main() 中调用该函数,参数为“TpointTech Company”,输出为“Hello! This is TpointTech Company”。

2) 整数返回类型

在 C++ 中,当函数必须返回一个完整的数字、字符代码或逻辑值时,使用整数返回类型(例如 int、char、bool 和 long)。这些适用于计算、评估或基于计数的操作。

Function Prototype in C++

语法

它具有以下语法。

int add(int x, int y)

C++ 整数返回类型示例

让我们以一个示例来说明 C++ 中的整数返回类型函数原型。

示例

编译并运行

输出

The total price is: 500
The Grade achieved is: B
17 is an odd number.
Factorial of 6 is: 720

说明

在此示例中,我们通过加法、分配分数、检查偶数性以及计算阶乘来演示几种整数返回类型的用法。在 main() 函数中,它将两个价格相加,根据分数确定分数,确定数字是偶数还是奇数,并计算数字的阶乘,显示所有结果。

3) 浮点返回类型

当函数必须返回包含分数或小数点的数值时,它使用像 float 或 double 这样的浮点返回类型。当精度对于科学计算、测量或财务数据至关重要时,这些对于表示实数是必需的。

语法

它具有以下语法。

C++ 浮点返回类型示例

让我们以一个示例来说明 C++ 中的浮点返回类型函数原型。

示例

编译并运行

输出

The result of division is: 5

说明

在此示例中,我们定义了一个 divide 函数,该函数安全地除以两个 double 值,处理除零错误并返回 0.0。在 main() 函数中,它调用 divide(20.0, 4.0) 函数,计算结果为 5,并将其打印到控制台。

4) 用户定义对象返回类型

C++ 允许我们定义自定义类并从中返回对象。这种方法以一种可以编写可重用、有组织的代码的方式封装数据和行为。当我们需要构建并返回类的实例以便调用者可以直接与之交互时,从函数返回对象是很常见的。

Function Prototype in C++

语法

它具有以下语法。

C++ 用户定义对象返回类型示例

让我们以一个示例来说明 C++ 中的用户定义对象返回类型函数原型。

示例

编译并运行

输出

Book Title: 1984
Book Author: George Orwell

C++ 函数原型的作用域

在 C++ 中,函数原型的作用域指定了函数在程序中可以被调用和使用的位置。函数原型将函数的名称声明给编译器,从而允许在其实际定义之前调用它。

我们可以将函数原型的作用域分为两类

  • 全局作用域
  • 局部作用域

现在让我们通过一些示例来讨论这些类型。

1) 全局作用域

当我们在全局作用域中声明函数原型时,它在程序中的任何位置都可访问。它在代码组织方面提供了更大的灵活性,尤其是在函数定义可能在其调用之后出现的大型程序中。

C++ 全局作用域示例

让我们以一个示例来演示 C++ 中函数原型的全局作用域。

示例

编译并运行

输出

The addition of two numbers are: 23

说明

在此示例中,我们定义了一个 sum 函数,该函数将两个整数相加。在 main() 函数中,它调用 sum(15, 8),然后将结果存储在 ans 中。最后,它打印输出。

2) 局部作用域

在 C++ 局部作用域中,函数原型在单个函数作用域内声明,并且只能在该函数中访问。此函数只能在声明它的函数内部调用。

C++ 局部作用域示例

让我们以一个示例来演示 C++ 中函数原型的局部作用域。

示例

编译并运行

输出

The difference between two numbers are: 13

说明

在此示例中,我们定义了一个 subtract 函数,该函数计算两个整数之间的差值。在 main() 函数中,它调用 subtract(18, 5) 函数,然后将结果存储在 ans 中。最后,它打印输出。

C++ 函数原型的优点

C++ 函数原型的一些优点如下

  • C++ 中的函数原型可以帮助我们避免运行时错误并提高代码的可靠性。
  • 它减少了头文件之间的依赖关系,这有助于减少在它们修改时重新编译的需求。
  • 通过将函数声明与其实现分离,函数原型促进了模块化代码设计,这使得程序易于管理和实现。
  • 在程序编译期间,函数原型有助于捕获错误,例如参数类型不匹配和参数数量不正确。这有助于减少调试时间并提高代码的可靠性。
  • 函数原型定义了参数类型和返回值,这使得编译器能够执行类型检查。它确保使用正确的参数类型调用函数,从而防止常见错误。

C++ 函数原型的缺点

C++ 函数原型的一些缺点如下

  • 如果程序中出现函数原型和定义的匹配不当,可能会导致错误。
  • 它会增加代码的大小,从而影响程序的性能。
  • 在大型项目中,使函数原型与其特定定义保持同步可能很困难。函数签名的任何修改都需要进行多次调整,从而导致更多的维护工作。
  • 函数原型可能会使代码更难阅读。具有复杂签名的多个声明可能会使源代码的可读性降低,并且更难理解。
  • 在定义函数签名时可能会导致重复工作。

C++ 函数原型选择题

1) 下列哪个选项最能描述 C++ 中的函数原型?

  1. 函数的接口声明
  2. 函数调用
  3. 函数定义
  4. 以上都不是

答案:c) 函数定义


2) 函数原型应放置在程序的什么位置?

  1. 在函数定义之后
  2. 在 main() 函数内部
  3. 在程序末尾
  4. 在调用函数之前

答案:d) 在调用函数之前


3) C++ 中的函数原型不包含以下哪个组件?

  1. 返回类型
  2. 函数体
  3. 函数名
  4. 参数

答案:b) 函数体


4) 为什么函数原型在 C++ 递归函数中很重要?

  1. 它们允许函数在完全定义之前调用自身
  2. 它们提高了性能
  3. 它们减少了内存使用
  4. 它们避免了无限循环

答案:a) 它们允许函数在完全定义之前调用自身


5) 如果函数定义与 C++ 中的原型不匹配会发生什么?

  1. 程序运行变慢
  2. 编译器报错
  3. 程序仍能正确运行
  4. 该函数被忽略。

答案:b) 编译器报错