gpt4 book ai didi

c++ - 编译器/解释器在解释时创建函数通常是个好主意吗?

转载 作者:太空宇宙 更新时间:2023-11-04 16:03:38 25 4
gpt4 key购买 nike

当我第一次学习 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++ 成员函数大致相同的规则。


  1. 如果没有这个,基本上不可能支持某些 C++ 功能,例如函数重载。

关于c++ - 编译器/解释器在解释时创建函数通常是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39275679/

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