文档章节

virtual关键字的应用及相关作用

d
 debugger_incubation
发布于 03/08 17:22
字数 538
阅读 7
收藏 0

1、virtual声明的变量;

virtual作为关键字声明变量,常见的是声明interface,作用是类似于指针,指向interface里面的变量;

好处:避免绝对路径的出现,这样可以用virtual interface,来通过句柄的赋值来动态的建立连接关系。

 

2、virtual声明的functian/task;

作用:可以被子类重载的函数(虚方法);

定义task/function时,使用virtual关键字。

好处:bird为基类,parrot为扩展类。bird类型的句柄可以指向parrot类型的对象,(进而在这种情况下,这个句柄可以直接赋值给parrot句柄)

当这样的一个句柄调用bird和parrot都有的task、function时,带virtual关键字的调用parrot的task/function。不带virtual关键字的调用

bird的task/function,而此时其他的variable的调用,因为句柄是bird类型,所以调用的应该还是基类的数据。这样便相当于重定义了基类

中的某些行为。 

  例子:一、不加virtual的bird和parrot类

打印出来的信息

例子:二、加virtual的bird和parrot类

打印出来的信息

3、virtual声明的类;

作用:抽象类;

好处:可以创建一个可以共享的基类,第一个是抽象类,它是可以被扩展但是不能被直接实例化的类,用virtual class××进行定义;

第二个是pure virtual 是一种没有实体的方法原型。用pure表明一个方法声明是原型定义,不仅是空的虚方法。

例子:(一)在扩展类对虚类进行实例化,这样就会报语法error;

 

(二)、要在扩展类对所有的纯虚方法提供实现,如果不写就会报错。

 

在扩展类对纯虚方法进行实现跑出来的仿真。

 

© 著作权归作者所有

d
粉丝 0
博文 1
码字总数 538
作品 0
南京
私信 提问
C#中的virtual,abstract,override和new关键字

C#中virtual,abstract,override用于方法重载,子类覆盖了父类的相同方法,父类中的实现不可能再被外面调用。 new的作用是投影(shadowing),子类隐藏了父类的相同方法,通过强制类型转换外面...

小桥河西
2014/06/06
0
0
Spring/Boot/Cloud系列知识(6)——Spring EL(2)

(接上文《Spring/Boot/Cloud系列知识(5)——Spring EL(1)》) 3、Spring EL 与第三方信息 3.1、Spring EL 与 集合 Spring EL基本表达式可以对集合中的信息进行读取操作,包括Collectio...

yinwenjie
2017/10/05
0
0
C++学习笔记 -- 虚析构函数与纯虚析构函数

开始学C++了,所以又重拾以前学习过的相关概念… 析构函数是当一个对象的生命周期结束时,会自动执行析构函数。 析构函数的定义: #ifndef AH #define AH class A { public: A(void); A(int...

meteoric
2013/05/08
0
0
成员函数的(重载,覆盖,隐藏)

我理解到的 隐藏,子类父类同名函数,参数不一样就是隐藏(在子类中父类函数为不可见),即 class Fruit{public:void priName(int s){cout<<"水果"<<endl;}}; class Apple :public Fruit{pub......

梦想游戏人
2015/05/18
81
0
rabbitmq入门到放弃之docker rabbitmq

代码地址:https://github.com/zhaoyunxing92/docker-case RabbitMQ是采用Erlang语言编写的实现高级消息队列协议(AMQP)的消息中间件 参考文档 rabbitmq.conf 主要写了不同系统怎么找到文件...

zhaoyunxing
07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jQuery使用GET方式来进行异步请求

jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求 参数: url(String) : 发送请求的URL地址. data(Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示,...

前端老手
11分钟前
3
0
网络安全市场需求

最近,网络安全技能差距的热门话题流传开来。技能差距经常被紧急讨论,可以看出它在实践中的作用是很大的。但信息安全是一门广泛的学科,所以在谈论“技能差距”时需要更具体。有专家表示,真...

linuxCool
28分钟前
3
0
定期批量改密,实现高效运维,保障口令安全

随着企业IT资产规模的不断增大,各类主机、应用系统的管理也变得愈加困难。 对于系统管理员来说,保证操作系统的密码安全是其重要工作,在需要维护众多的主机时,其面临的困境将是: 1、难以...

堡垒啊
53分钟前
5
0
怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
今天
6
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部