多态

  在面向对象语言中,接口的不同实现形式就叫做多态。允许将子类类型的指针赋值给父类类型的指针。c++中是通过虚函数实现的。同一操作,作用于不同的对象,可以产生不同的结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

  作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。父亲的行为像儿子,而不是儿子的行为像父亲。

  使用继承性的结果就是可以创建一个类的家族,在认识这个类的家族时,就是把导出类的对象当作基类的对象,这种认识又叫作upcasting。这样认识的重要性在于:我们可以只针对基类写出一段程序,但它可以适应于这个类的家族,因为编译器会自动就找出合适的对象来执行操作。这种现象又称为多态性。而实现多态性的手段又叫称动态绑定(dynamic binding)。

  举例:

class A

{

 public:

  A() {}

  virtual void foo()

  {

    cout << "This is A." << endl;

  }

};

class B : public A

{

 public:

  B() {}

  void foo()

  {

    cout << "This is B." << endl;

  }

};

int main(int argc, char* argv[]) {

  A *a = new B();

  a->foo();

  if(a != NULL)

  delete a;

  return 0;

  }

  这将显示:

  This is B.

  如果把virtual去掉,将显示:

  This is A.

转载于:https://www.cnblogs.com/keleshaoye/p/3900520.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值