C++ 为什么在定义这些函数之前会调用它们?

C++ 为什么在定义这些函数之前会调用它们?,c++,C++,这是时间函数的cpp。代码定义了this time.cpp上time.h文件的函数。我的问题是:如果fct中的函数是事后定义的,那么这个函数定义怎么可能呢?多谢各位 void Time::setTime(int hour, int minute, int second) { sethour(hour); setminute(minute); setseconds(seconds); } void Time::sethour( int h) { .... 大概是因为它们

这是时间函数的cpp。代码定义了this time.cpp上time.h文件的函数。我的问题是:如果fct中的函数是事后定义的,那么这个函数定义怎么可能呢?多谢各位

void Time::setTime(int hour, int minute, int second)
{
    sethour(hour);
    setminute(minute);
    setseconds(seconds);
}

void Time::sethour( int h)
{ ....

大概是因为它们被声明在上面的某个地方(例如在头文件中),这才是重要的


最好设想编译器以“一次通过”的方式运行;它从上到下线性地处理代码。因此,在使用函数之前,它需要知道函数存在(即它们的名称、参数和返回类型),以便确定调用方没有执行无效的操作。但是实际的函数定义(即函数体)与此任务无关。

调用函数不需要定义,只需要声明即可。编译器只对声明感到满意。链接器需要生成代码,并且需要定义,但定义它们的时间并不重要,只要您这样做

在您的情况下,每个成员函数的声明对所有其他成员函数都是可见的,即使在类定义中它是随后出现的:

class Time
{
   void setTime();  //setTime knows about sethour even if it's before
   void sethour();
};
在类之外,这不成立,这意味着在使用方法之前需要声明。声明只是一个原型:

void foo();
void goo()
{
    foo(); //can call foo here even if it's just declared and not defined
}

您可以选择何时定义它们