c++语言中的动态性:
一 概念:
动态性就是指在程序在运行的时候才能确定具体的功能;在c++中的动态性具体体现为类中的虚函数;虚基类;动态联编和多态性。
1.1 虚函数
虚函数就是在类中函数的前面加上关键字virtual,一旦一个类中的函数被申明为虚函数,那么它的子类中的对应函数也是虚函数,为了提高可读性,可以显示加上virtual关键字。
class Shape
{
public:
virtual void draw(); //draw() is virtual function
};
class Circle: public Shape{
public:
virtual void draw(); //draw() is virtual function too
};
1.2 抽象基类
抽象基类就是将类中的虚函数申明为纯虚函数,那么该类就是抽象类,抽象类不能实例化,其作用就是为了让其派生类继承它的接口。
class Shape
{
public:
virtual void draw() = 0; //draw() 为纯虚函数
}; // 类Shape为虚基类
class Circle: public Shape{
public:
virtual void draw();
};
1.3 动态联编
动态联编就是用基类的指针去调用子类中的对象,程序会在动态运行的时候决定调用哪个一个子类的函数。
#include <iostream>
using namespace std;
class Shape
{
public:
virtual void draw(){}
};
class Circle: public Shape{
public:
void draw()
{
cout<<"this is a shape of circle"<<endl;
}
};
class Rectangle: public Shape{
public:
void draw(){
cout<<"this is the shape of rectangle"<<endl;
}
};
int main(int argc, char *argv[])
{
Shape *p;
Circle mycircle;
Rectangle myrectangle;
p = &mycircle;
p->draw();
p = &myrectangle;
p->draw();
return 0;
};
the result is:
1.4 多态性