gpt4 book ai didi

c++ - 为什么函数声明在 C++ 中是强制性的,而不是在 C 中?

转载 作者:IT老高 更新时间:2023-10-28 21:42:24 25 4
gpt4 key购买 nike

所以我之前的一次考试有这个问题,直到现在我一直在读到你不需要任何语言的声明?

哪个是对的?如果没有声明,C++ 会报错,还是会运行?

最佳答案

在涉及 C 和 C++ 的讨论中,“函数声明”是一个相当模糊的术语。这些语言在这方面有很大的不同。

在 C++ 语言中,只有一种函数声明:包含所有参数类型和返回类型的声明。此类声明是必要的,因为 C++ 语言支持函数重载。为了选择调用哪个函数,编译器需要了解该函数的所有信息,并且需要知道该函数的哪些重载版本可用。如果您“忘记”声明某些重载版本,则重载决议不会考虑它。这至少是 C++ 中需要函数声明的原因之一。

在 C 语言中有两种函数声明:非原型(prototype)声明和原型(prototype)声明(或简称为原型(prototype))。 C 中的原型(prototype)与 C++ 声明非常相似——它包括所有参数类型。标准 C 中的可变参数函数(带有 ... 参数的函数)始终需要原型(prototype)。对于非可变函数 prototype 声明即使在今天也不需要。但从 C99 开始,所有其他函数至少需要 非原型(prototype) 声明。在较早的 C89/90 版本的语言函数中,非可变函数的声明不是必需的。

所以,这应该基本上回答了你的问题。在 C++ 中,函数声明是必需的,因为语言特性严重依赖它们。在现代 C 函数中,还需要声明以使代码更安全。在旧版本的 C 函数声明中不需要,主要是因为该语言被定义为可以在没有它们的情况下工作。

关于c++ - 为什么函数声明在 C++ 中是强制性的,而不是在 C 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876844/

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