Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349612
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:08:07

运行结果为:
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) |
给主人留下些什么吧!~~