В C / C ++ функция вызывающего может вызывать функцию вызываемого в том и только в том случае, если функция вызываемого абонента является видимой для вызывающего, что означает, что определение вызываемого должно быть выполнено до того, как оно будет использовано, в противном случае используйте forward-объявление.*
Вот моя проблема,
class A
{
public:
void foo()
{
bar();
}
void bar()
{
//...
}
};
int main()
{
A a;
a.foo();
}
Приведенный выше код будет работать нормально.Но foo
вызывает bar
, и я не поставил определение bar
перед foo
или не объявил форвард bar
, как может работать вызов на bar
в foo
?Как мог компилятор найти bar
?