I was taught that functions need declarations to be called. To illustrate, the following example would give me an error as there is no declaration for the function sum:
#include <iostream>
int main() {
  std::cout << "The result is " << sum(1, 2);
  return 0;
}
int sum(int x, int y) {
  return x + y;
}
// main.cpp:4:36: error: use of undeclared identifier 'sum'
//  std::cout << "The result is " << sum(1, 2);
//                                   ^
// 1 error generated.
To fix this, I'd add the declaration:
#include <iostream>
int sum(int x, int y); // declaration
int main() {
  std::cout << "The result is " << sum(1, 2);
  return 0;
}
int sum(int x, int y) {
  return x + y;
}
Why the main function doesn't need the declaration, as other functions like sum need?
 
     
     
     
     
     
     
     
     
    