C+中的前向声明是什么?

C+中的前向声明是什么?

at:http:/www.learncpp.com/cpp-教程/19-头文件/

现提及以下各点:

Ad.cpp:

int add(int x, int y){
    return x + y;}

cpp:

#include <iostream>int add(int x, int y); // forward declaration using function prototypeint main(){
    using namespace std;
    cout << "The sum of 3 and 4 is " << add(3, 4) << endl;
    return 0;}

我们使用了一个前向声明,以便编译器知道add“是在编译时main.cpp。如前所述,为您想要使用的驻留在另一个文件中的每个函数前写声明会很快变得单调乏味。

你能解释一下“前向申报“更进一步,如果我们在main()功能?


动漫人物
浏览 942回答 4
4回答

跃然一笑

编译器查找当前翻译单元中使用的每个符号是否在当前单元中声明。这只是在源文件开头提供所有方法签名的风格问题,而定义则是稍后提供的。当您使用指向某个类的指针作为另一个类的成员变量时,它的重要用途。//foo.hclass&nbsp;bar;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;This&nbsp;is&nbsp;usefulclass&nbsp;foo{ &nbsp;&nbsp;&nbsp;&nbsp;bar*&nbsp;obj;&nbsp;//&nbsp;Pointer&nbsp;or&nbsp;even&nbsp;a&nbsp;reference.};//&nbsp;foo.cpp#include&nbsp;"bar.h"#include&nbsp;"foo.h"因此,尽可能在类中使用前向声明。如果您的程序只有功能(带有ho头文件),那么在开始时提供原型只是一个风格问题。无论如何,如果头文件存在于只有功能的普通程序中,则情况也是如此。

慕田峪7331174

因为C+是自上而下解析的,所以编译器需要在使用它们之前了解它们。所以,当你提到:int&nbsp;add(&nbsp;int&nbsp;x,&nbsp;int&nbsp;y&nbsp;)在主函数中,编译器需要知道它的存在。要证明这一点,请将其移到主函数下面,您将得到一个编译器错误。所以前进宣言“就像它在罐头上说的那样。它是在它的使用之前声明一些东西。通常,您将在头文件中包含前向声明,然后以同样的方式包含该头文件。碘流包括在内。

MMTTMM

“前向申报“在C+中,主要用于类声明。见(结尾)这个答案为什么一个类的“前向声明”实际上只是一个简单的类声明有个花哨的名字。换句话说,“前进”只是在术语中增加了压舱物,如任何在声明某些标识符的范围内,声明可以看作是向前的。以前它被使用了。(至于什么是声明相对于定义,再看看定义和声明有什么区别?)
打开App,查看更多内容
随时随地看视频慕课网APP