这是时间函数的cpp。代码在此time.cpp上定义了time.h文件的函数。我的问题是:如果之后定义了这个函数中的函数,那么这个函数定义怎么可能呢?谢谢
void Time::setTime(int hour, int minute, int second)
{
sethour(hour);
setminute(minute);
setseconds(seconds);
}
void Time::sethour( int h)
{ ....
答案 0 :(得分:7)
您不需要定义来调用函数,您只需要声明。编译器对单独的声明很满意。链接器需要生成代码,并且需要定义,但只要你定义它们就 时无关紧要。
在你的情况下,每个成员函数的声明对所有其他成员函数都是可见的,即使在之后的类定义中也是如此:
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
}
答案 1 :(得分:2)
大概是因为他们声明在某处(例如在头文件中),这才是重要的。
最好想象编译器以“一次通过”的方式运行;它从上到下线性处理您的代码。因此,它需要知道函数在使用之前存在(即它们的名称,参数和返回类型),以便确定调用者没有做无效的事情。但实际的功能定义(即其主体)与此任务无关。
答案 2 :(得分:0)
您可以选择何时定义它们。