运行结果为:
Base::fun1()
Base::fun2()
Base::fun3()
A::fun1()
A::fun2()
Base::fun3()
这个运行结果并没有错,因为A类public继承了Base类[class A:public Base]
int main()
{
Base b;
A a;
foo(b);
foo(a); //这个函数void foo (Base& obj)的参数用的是地址传递。如果你将这个作一修改可能问题会出现
}
修改如下
class A:public Base
{
int a;
public:
void Afun1() {cout<<"A::fun1()"< void Afun2() {cout<<"A::fun2()"<};
void foo_A (A& obj)
{
obj.Afun1();
obj.Afun2();
//obj.fun3();
}
//-------------------------------------------
//主函数修改如下
int main()
{
Base b;
A a;
foo(b);
foo_A(a);
}
//------------------------------------------------------
你看一下父类Base中的函数都是public:类型所以子类可以调用父类的函数
请用VC6.0以上板本你就会发现问题所在!浅薄之见,请含凉!
--------------------next---------------------
阅读(1143) | 评论(0) | 转发(0) |