码迷,mamicode.com
首页 > 编程语言 > 详细

c++之虚函数(动态绑定技术)

时间:2014-05-20 13:23:11      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:style   class   c   color   a   int   

 虚函数

   1.虚函数的思想借鉴于Simula语言,可以实现运行的多态。虚函数允许派生类重载、覆盖,即使访问对象所使用的指针类型是基类型,但依旧能调用派生类的相应函数。当使用对象指针或对象引用调用虚函数时,采用动态绑定技术。

    2.virtual 关键字只能用在虚函数的声明中,在函数的定义中不能使用

 

      

class Shape
{
     public:
      virtual void draw();
};
void Shape::draw(){cout<<"这是Shape->draw."<<endl;}

class Circle:public Shape
{
  public:
     virtual void draw();
};
void Circle::draw(){cout<<"这是Circle->draw."<<endl;}


class Rectangle:public Shape
{
  public:
      virtual void draw();
};
void Rectangle::draw(){cout<<"这是Rectangle->graw."<<endl;}

void paint(Shape *px)//注意这里的参数类型
{
px->draw();      //这会输出shape->draw()??????
}

 

int main()
{
Circle *pa = new Circle();
Rectangle *pb = new Rectangle();

paint(pa);
paint(pb);
delete pa;
delete pb;
return 0;
}

结果:

这是Circle->draw.

这是Rectangle->draw.//////////////////////////////??这是结果,都是虚函数的功劳。

 

动 态 绑 定

C++的多态建立在动态绑定的基础之上。而虚函数表用来解决动态绑定问题。动态绑定的后台运作机制就是基于虚函数表。

 

 

 

 

c++之虚函数(动态绑定技术),布布扣,bubuko.com

c++之虚函数(动态绑定技术)

标签:style   class   c   color   a   int   

原文地址:http://www.cnblogs.com/Ohero/p/3737632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!