C++面向对象程序设计——多态性和虚函数

多态:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。(消息,就是指调用函数)

多态性分为两类:静态多态和动态多态。
静态多态是通过函数的重载实现的,动态多态的特点是:不在编译时确定运行那个程序,而是在程序运行的过程中才确定操作所针对的对象。(运行时多态,是通过虚函数实现的)
即如果通过对象名调用虚函数,属于静态关联。如果通过基类指针调用虚函数,为动态关联。


虚函数:
就是在基类声明函数是虚拟的,并不是实际存在的函数,然后在派生类中才正式定义的函数。
虚函数的作用:
允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
虚函数的声明方法:
virtual 函数类型 函数名();
虚函数的使用方法:
1、在类外定义虚函数时,不必再加virtual。
2、在派生类中重新定义此函数,函数名,函数类型,函数参数个数和类型必须与基类的虚函数相同。
3、当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。
4、定义一个指向基类对象的指针变量,并使它指向同一类族中需要调用该函数的对象。
5、通过指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。

静态关联(函数重载)、早期关联/动态关联/滞后关联(程序运行阶段的多态性)

虚函数使用注意:
1、只能使用virtual声明类的成员函数,而不能将类外的普通函数声明为虚函数。
2、一个成员函数被声明为虚函数后,在同一类族中的类就不能再定义一个非virtual的但是与该虚函数具有相同的参数(包括个数和类型)和返回值类型的同名函数。


虚析构函数:
virtual ~classname( ) { ... }
如果将基类的析构函数声明为虚函数,由该基类所派生的析构函数也都自动成为虚函数(即使派生类的析构函数与基类的析构函数名字不相同)。最好把基类的析构函数声明为虚函数。


纯虚函数与抽象类:
virtual  函数类型 函数名( 参数列表 ) =0;
纯虚函数没有函数体。 如果一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中仍然为纯虚函数。


抽象类:
1、唯一目的的就是用它去建立派生类,不能用来定义对象,只做为一种基本类型。
2、凡是包含纯虚函数的类都是抽象类,因为纯虚函数是不能被调用的,包含纯虚函数的类是无法建立对象的。
3、虽然抽象类不能定义对象,但是可以定义指向抽象类数据的指针变量。


















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值