C++ 声明没有内容的函数;-然后是内容{}-c++;

C++ 声明没有内容的函数;-然后是内容{}-c++;,c++,function,overloading,declaration,C++,Function,Overloading,Declaration,我对术语不太清楚,所以我不知道如何称呼我的标题;如果有人想用正确的术语编辑它,那就好了 当我编写代码时,我总是按照时间顺序来做。我把我的主要工作放在底部,然后向上工作。然而,我最近读了一篇教程,做了一些我以前从未见过的事情 在顶部,在include之后,程序员写道: void inccell(int pos, int width, unsigned char *board); void deccell(int pos, int width, unsigned char *board); 我以前

我对术语不太清楚,所以我不知道如何称呼我的标题;如果有人想用正确的术语编辑它,那就好了

当我编写代码时,我总是按照时间顺序来做。我把我的主要工作放在底部,然后向上工作。然而,我最近读了一篇教程,做了一些我以前从未见过的事情

在顶部,在include之后,程序员写道:

void inccell(int pos, int width, unsigned char *board);
void deccell(int pos, int width, unsigned char *board);
我以前没见过这个;我总是使用
void myfunction(args){stuff}
。我没有在这个上下文中用
看到它。在此之后,他在程序中进一步定义函数的内容:

void inccell(int pos, int width, unsigned char *board)
{
    ++board[(pos-width)-1];
    ++board[ pos-width   ];
    ++board[ pos-width +1];
    ++board[ pos-1       ];
    ++board[ pos+1       ];
    ++board[(pos+width)-1];
    ++board[ pos+width   ];
    ++board[ pos+width+1 ];

    return;
}

void deccell(int pos, int width, unsigned char *board)
{
    --board[(pos-width)-1];
    --board[ pos-width   ];
    --board[ pos-width +1];
    --board[ pos-1       ];
    --board[ pos+1       ];
    --board[(pos+width)-1];
    --board[ pos+width   ];
    --board[ pos+width+1 ];

    return;
}
带有
的函数的参数
{}
是一样的,就我所知,这不是“过载”;我认为使用重载可以使用不同的参数集调用函数,即
myfunc(myint,mystr,mybool)
myfunc(myint,mystr)
都是有效的

我的说法可能是错的

但是,有人能向我解释一下,如果他没有重载,为什么他在顶部声明函数,以及它的目的是什么

谢谢。

这些是函数声明。它们只是通知编译器这些函数的存在和签名,以便它们的定义可以出现在调用点之后:

void foo(); // DECLARATION

int main()
{
    foo(); // CALL (would be illegal without the declaration, because the compiler
           //       wouldn't know about foo(), since it hasn't met its definition yet)
}

#include <iostream>

void foo() // DEFINITION
{ 
    std::cout << "Hello, world!"; 
}
void foo();//宣言
int main()
{
foo();//调用(如果没有声明,将是非法的,因为编译器
//不知道foo(),因为它还没有达到定义)
}
#包括
void foo()//定义
{ 

std::cout他首先是声明函数,然后定义它

在定义之前使用函数时,需要转发声明。(它是必需的)

如果函数在顶部定义,则不需要函数声明


它用于编译器检查参数的数据类型MthCH,填充函数调用的地址(BoePosig)……/P>任何C++教程都会告诉你这些函数是原型。声明,另一个是定义。它只是向前声明,他在主声明之后定义代码,我认为为了清晰起见。@0x499602D2显然,有一种比阅读教程更快的方法。2个答案已经…@0x499602D2哦,是的,我在教程中看到过;)。这个例子甚至来自一个教程。然而,大多数人认为你是alr我已经知道了这些术语,因此没有解释它们的用法。我明白了…基本上,我一直在按“时间顺序”编码,所以main是从底部开始的,我调用的东西是向上一点的,等等,为了让编译器了解函数,通过先声明函数,这让我避免了一些错误确定我需要将函数放置在何处的过程?这也是唯一的原因吗?它是否会提高速度(或降低速度)?这在普通的旧C语言中有效吗?@Anteara:是的,它的工作方式与C语言相同,与性能无关。它只是通知编译器存在一个否则无法找到的函数。好吧,因此实际上,当涉及到编译程序时,它实际上与我简单地重新启动时完全相同我改变了函数的顺序。没有性能差异,只是为了清晰或简单?