当我第一次学习 C++ 时,我注意到函数是从上到下创建的,这与 Java 等语言不同,在 Java 中,函数“声明”在代码中的顺序无关紧要。
C++ 示例:
#include <iostream>
using namespace std;
int main() {
test();
return 0;
}
void test() {
}
但是当您交换函数的顺序时,程序可以正常运行。
在设计 C++ 时,这是故意的吗?
最佳答案
与使用相比,C 或 C++ 对函数定义的顺序没有太多要求。
C 允许函数在使用前声明,但(在 C89/90 中)实际上并不需要它。如果调用未声明的函数,则编译器需要对函数的类型做出某些假设(如果函数的定义不符合这些假设,则代码无效)。
但是,C++ 确实要求自由函数至少在使用前声明1。函数定义还声明了该函数,因此微型程序通常在使用前先定义定义,以避免必须将声明与其定义分开编写。
对于类成员,C++ 稍微放宽了限制。例如,这是完全可以接受的:
class Foo {
void bar() { baz(); }
void baz() {}
};
Java 的主要区别在于简单地禁止所有自由函数,因此它只有成员函数,它们遵循与 C++ 成员函数大致相同的规则。
- 如果没有这个,基本上不可能支持某些 C++ 功能,例如函数重载。
关于c++ - 编译器/解释器在解释时创建函数通常是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275679/