在C ++中声明函数和方法的顺序是否重要

时间:2015-07-27 11:30:21

标签: c++ class

在C语言中,在声明它之前使用函数时,编译器假定不带参数并返回int和 如果函数返回另一个类型或带参数,则编译器会产生错误 如果我创建一个稍后在代码中声明的类的对象,那么在C ++中是否会发生同样的事情?

3 个答案:

答案 0 :(得分:3)

在C ++中,没有类,也没有函数的隐式声明。所以你的问题不直接适用。

如果调用函数或创建给定类型的对象,则必须在首次使用之前声明该函数/类型。不一定要定义函数。只有在实际实例化它们或将它们用作(成员)变量时才需要定义类。当只需要指向类的指针时,不需要声明,因为在分配实际对象的内存或在对象上调用函数之前,前向声明就足够了。

答案 1 :(得分:3)

订单很重要。如果引用一个尚未声明的函数(只是签名和返回类型,没有实现),编译器将抛出一个错误。函数的定义可以等到链接时间。 AFAIK,C ++中没有隐式声明。

通常您将函数的声明放在头文件中。传统上,由翻译单元(通常是独立的源文件,例如hello.cpp)导出的符号将通过类似命名的头文件(例如,hello.h)提供。然后在源文件中执行实现。然后,每个翻译单元都可以包含来自其他翻译单元的标题文件(例如other.h)。

每个翻译单元都被单独编译(即hello.cpp等源文件;所有#include预处理语句都被要包含的文件的实际内容替换。在链接时,不同翻译单元中的功能的实现被链接在一起。如果此链接步骤失败,那么您仍然可能会遇到错误。

答案 2 :(得分:0)

在早期的c ++版本中,如果定义函数test(int a),默认情况下它将返回int类型的值。但是在c ++成为标准之后,该函数将出错。您可以在书籍c++ Primerfunction chapter

中找到介绍