C++编程失乐园

致力于解决论坛的不足,探讨C++的原理

C++随笔 之 C++多态性分析

原文出处
http://community.csdn.net/Expert/topic/5240/5240218.xml?temp=.6121942


C++多态性是基于抽象类来实现的,什么叫抽象类?
抽象类就是不能被实例化的类,主要是因为类中包含一个纯虚函数
例如:
virtual   void   draw() = 0;
抽象类不能实例化,但是其派生类可以
派生类重写draw()函数之后就可以实例化对象了,那么n个派生类可以有n种不同的draw()函数
举一个例子:
例如:                           人[  男人        女人]
人可以[劳动]吧,那么我们就把[劳动]这个函数定义为纯虚函数,
那么在定义[男人]的时候,我们就可以重写[劳动]函数,让他进行耕地操作
在定义[女人]的时候,我们就可以重写[劳动]函数,让她进行织布操作
那么在人劳动的时候,具体到男人,那就是耕地,具体到女人,那就是织布

以上就是一个最简单的解释
那么我们如果出现这个问题,人还分为老年人,中年人,小孩子
那么我们在继承人这个类的时候,把老年人,中年人,小孩子,不能重写它的劳动函数,也就是劳动函数还是一个纯虚函数,下面我给出一个图

[比喻不是很确却,抱歉]
下面我给例子:
Code Example
class Person
{
   virtual void Do() = 0;
};
class OldPerson:public Persion
{
};
class OldMan:public OldPerson
{
   void Do()
   {
      抽烟,聊天();
   }
};
class OldWoman:public OldPerson
{
   void Do()
   {
      洗衣服();
   }
}
class MidPerson:public Person
{
};
class MidMan:public MidPerson
{
   void Do()
   {
      耕地();
   }
};
class MidWoman:public MidPerson
{
   void   Do()
   {
      织布();
   }
};
......下面小孩子的我就不写了,相信聪明的你一下子就知道怎么写了
void   劳动(const Person &person)
{
   person.Do();
}
void main()
{
      MidWoman midwomen;
      MidMan  midman;
      劳动(midwoman);
      劳动(midman);
      
}

posted on 2006-12-25 15:42 木木头 阅读(182) 评论(0)  编辑 收藏 引用 所属分类: C++特性


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(3)

随笔分类(29)

搜索

最新随笔

最新评论