读书人

函数重载的有关问题

发布时间: 2012-02-22 19:36:54 作者: rapoo

函数重载的问题
哪位帮忙测试下,包括编译错误等,给个结果

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");
}


[解决办法]

C/C++ code
#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;}
[解决办法]
C/C++ code
错误还真不少!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() 

读书人网 >C++

热点推荐