函数重载的问题
哪位帮忙测试下,包括编译错误等,给个结果
class A
{
public:
func() { cout << 'A' << endl;}
}
class B : public A
{
public:
func(char *p) { cout << p << endl;}
}
class C :public A
{
public:
func() { cout << 'C' << endl; }
func(char *p) { cout << p << endl; }
}
main()
{
A a, *pa;
B b;
C c;
a.func();
b.func();
c.func();
b.func("BB");
c.func("CC");
pa = &b;
pa->func();
pa->func("BBB");
pa = &c;
pa->func();
pa->func("CCC");
}
[解决办法]
#include <iostream>using namespace std;class A{public: void func() { cout << 'A' << endl;}};class B : public A{public: void func(char *p) { cout << p << endl;}};class C :public A{public: void func() { cout << 'C' << endl; } void func(char *p) { cout << p << endl; }};int main(){ A a, *pa; B b; C c; a.func(); //b.func(); // there is no func() defined in class B c.func(); b.func("BB"); c.func("CC"); pa = &b; pa->func(); //pa->func("BBB"); //class A doesn't have a definition of func(char*) pa = &c; pa->func(); //pa->func("CCC"); // class A doesn't have a definition of func(char*) return 0;}
[解决办法]
错误还真不少!CSDN21.cpp:7: ISO C++ forbids declaration of `func' with no typeCSDN21.cpp:10: semicolon missing after declaration of `A'CSDN21.cpp: In member function `int A::func()':CSDN21.cpp:7: parse error before `:' tokenCSDN21.cpp: At global scope:CSDN21.cpp:13: ISO C++ forbids declaration of `func' with no typeCSDN21.cpp:16: semicolon missing after declaration of `B'CSDN21.cpp: In member function `int B::func(char*)':CSDN21.cpp:13: parse error before `:' tokenCSDN21.cpp: At global scope:CSDN21.cpp:19: ISO C++ forbids declaration of `func' with no typeCSDN21.cpp:20: ISO C++ forbids declaration of `func' with no typeCSDN21.cpp:23: semicolon missing after declaration of `C'CSDN21.cpp: In member function `int C::func()':CSDN21.cpp:19: parse error before `int'CSDN21.cpp: In member function `int C::func(char*)':CSDN21.cpp:20: parse error before `int'CSDN21.cpp: At global scope:CSDN21.cpp:24: ISO C++ forbids defining types within return typeCSDN21.cpp:24: extraneous `int' ignoredCSDN21.cpp:24: two or more data types in declaration of `main'CSDN21.cpp:24: two or more data types in declaration of `main'CSDN21.cpp:24: `main' must return `int'CSDN21.cpp:24: semicolon missing after declaration of `class A'CSDN21.cpp: In function `int main()':CSDN21.cpp:30: no matching function for call to `B::func()'CSDN21.cpp:13: candidates are: int B::func(char*)CSDN21.cpp:38: no matching function for call to `A::func(const char[4])'CSDN21.cpp:7: candidates are: int A::func()CSDN21.cpp:42: no matching function for call to `A::func(const char[4])'CSDN21.cpp:7: candidates are: int A::func()