admin 管理员组文章数量: 1086019
2024年3月22日发(作者:ajax是什么杂志)
c++中virtual的用法
virtual,顾名思义,就是虚拟,它是C++内的一个关键字,用
来创建虚函数。
1、virtual的作用
(1)在某些情况下,我们可以重载函数,那么对象如何确定使
用哪个重载版本呢?如果我们在基类定义了一个虚函数,那么在派生
类中重载的函数就变成了非虚函数,但依然可以使用基类定义的同名
函数,只要对象的类型是基类的类型或派生类的类型,在使用函数时,
就能够正确调用派生类中定义的函数,这就是virtual的作用。
(2)virtual函数允许程序员在基类中定义派生类中可以重载
的函数,从而提供统一的接口,在运行时由编译器根据实际类型自动
就会调用正确的函数。使用virtual函数可以将对某些函数的调用从
静态绑定(编译期完成的)变成动态绑定(运行期完成的),以实现
多态技术。
2、virtual的用法
在使用virtual关键字时,需要注意:
(1)virtual关键字只能用于成员函数,不能用于静态函数;
(2)virtual关键字只能用于类内部,而且必须出现在函数的
声明之前,否则编译器会报错;
(3)只有把函数声明为virtual,在派生类中的函数才会有
virtual的特性,否则在未声明为virtual或不在派生类的函数中,
即时重载后也没有virtual的特性;
- 1 -
(4)派生类中的virtual函数,可以不用再添加virtual关键
字,编译器会默认把它转化为virtual函数,这叫做自动的虚拟继承;
(5)要删除非虚函数,需要把函数声明为virtual并且在派生
类中覆写后再把它删除,这样编译器才能够通过检查调用到合适的函
数;
(6)可以为基类定义一个纯虚函数,它没有实现,派生类中必
须覆写这个纯虚函数,才算完成派生类的定义;
(7)可以把纯虚函数的实现写入基类中,这样派生类就可以不
用覆写纯虚函数而实现它,也就是说派生类也可以使用基类的实现,
当然如果派生类中存在相关的函数实现,那么编译器会调用派生类中
的实现;
(8)virtual函数不能被声明成static成员,因为static成
员没有this指针,无法动态绑定;
(9)在派生类中,可以用virtual关键字重新声明基类中的虚
函数,但是不能对它进行定义;
(10)虚函数的调用不需要使用virtual关键字,也可以使用其
它的调用方式,如类型转换、强制转换等。
- 2 -
版权声明:本文标题:c++中virtual的用法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1711050102a585867.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论