C++에서는 함수 오버로딩을 사용할 수 있습니다. 이제 main() 함수도 오버로드할 수 있다는 질문이 떠올랐습니다.
아이디어를 얻을 수 있는 하나의 프로그램을 살펴보겠습니다.
예시
#include <iostream> using namespace std; int main(int x) { cout << "Value of x: " << x << "\n"; return 0; } int main(char *y) { cout << "Value of string y: " << y << "\n"; return 0; } int main(int x, int y) { cout << "Value of x and y: " << x << ", " << y << "\n"; return 0; } int main() { main(10); main("Hello"); main(15, 25); }
출력
This will generate some errors. It will say there are some conflict in declaration of main() function
main() 함수를 극복하기 위해 클래스 멤버로 사용할 수 있습니다. main은 C++의 C처럼 제한된 키워드가 아닙니다.
예시
#include <iostream> using namespace std; class my_class { public: int main(int x) { cout << "Value of x: " << x << "\n"; return 0; } int main(char *y) { cout << "Value of string y: " << y << "\n"; return 0; } int main(int x, int y) { cout << "Value of x and y: " << x << ", " << y << "\n"; return 0; } }; int main() { my_class obj; obj.main(10); obj.main("Hello"); obj.main(15, 25); }
출력
Value of x: 10 Value of string y: Hello Value of x and y: 15, 25