C++的virtual

函数的重写:
当子类定义了与父类一模一样的函数时,子类定义的函数将会覆盖父类继承过
来的函数,称之为重写。
如果子类重写了父类继承过来的函数,但是又想调用已经被覆盖的父类函数,
那么可以使用 parent(父类名)::(被覆盖的父类函数)
如: parent::test();    实现调用父类的函数

父类指针指向子类对象:
从语法本质讲,子类对象的前半部分就是父类(从父类继承的数据),因而可
以将子类对象的指针直接转化为父类。
注意:当父类指针指向子类对象时,而且子类对象函数又重写了继承过来的父
类函数,那么父类指针调用重写函数时,调用的是哪个类的函数? 父类
所以,当一个成员函数需要子类重写,那么在父类应该将其声明为virtual,
称之为虚函数,那么就能执行子类的函数,而不是父类的。
virtual的作用:根据对象的实际类型,调用相应类型的函数,也就是说即使
父类指针指向子类对象,也会根据子类对象指向子类函数,而不是跳转到父类
执行函数。

父类被重写的函数未加virtua,运行父类的test 父类被重写的函数加上virtual,运行子类的test()函数

 注:virtual在函数中占4个字节,无论定义多少个virtual声明,加起来依旧只占4个字节。

纯虚函数:
1.将成员函数声明为virtual
2.函数声明后加上 =0
3.该函数没有函数体
例如:virtual void test(char *test) = 0;
只要有纯虚函数,那么这个类就是抽象类(或称纯虚类),抽象类不能够被实
例化,即无法创建该对象。实际用途:充当“接口规范”,相当于Java中
interface语法,用于替代C中的回调函数语法
接口规范:凡是遵循此规范的类,都必须实现指定的函数接口。通常指一系列接口

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值