C++函数重载(6) - main函数重载

来源:互联网 发布:透视衣服的软件 编辑:程序博客网 时间:2024/06/11 11:54
参考下面程序的结果.
#include <iostream>using namespace std;int main(int a){    cout << a << "\n";    return 0;}int main(char *a){    cout << a << endl;    return 0;}int main(int a, int b){    cout << a << " " << b;    return 0;}int main(){    main(3);    main("C++");    main(9, 6);    return 0;}

编译失败。Eclipse提示:
..\src\test.cpp: In function `int main(char*)':
..\src\test.cpp:9: error: declaration of C function `int main(char*)' conflicts with
..\src\test.cpp:4: error: previous declaration `int main(int)' here


如果需要在C++中实现main函数重载,必须使用类,并且将main做为它的成员函数。
注意:在C, C++, Java, C#中,main并不是被保留的关键字或特殊词。
例如,我们可以声明一个名字为main的变量:
#include <iostream>int main(){    int main = 10;    std::cout << main;    return 0;}
输出:
10

下面程序演示了在一个类中实现main函数的重载。

#include <iostream>using namespace std;class Test{public:    int main(int s)    {        cout << s << "\n";        return 0;    }    int main(char *s)    {        cout << s << endl;        return 0;    }    int main(int s ,int m)    {        cout << s << " " << m;        return 0;    }};int main(){    Test obj;    obj.main(11);    obj.main("Hello World");    obj.main(99, 66);    return 0;}
输出结果:
33
Hello World
99 66
0 0