c++语言中的动态性

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  多态性

               多个派生类一起继承了一个基类,每个派生类的对象都可以当成基类对象来使用,比如形参中当成基类对象。将虚函数和动态联编和在一起就成了多态。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值