博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【43】学习处理模版化基类内的名称
阅读量:5858 次
发布时间:2019-06-19

本文共 545 字,大约阅读时间需要 1 分钟。

1、考虑下面的场景,有个类模版template<typename T> Box{}; 内部有个方法XXX,现在子类template<typename T> class BigBox:public Box<T>{},BigBox内部使用方法XXX,考虑出现什么问题?

2、首先一点,类模版产生出来的类之间,没有关系。也就是Box<Book> 与Box<Dog>没有关系。通过指定模版实参,可以产生不同的模板类,也可以全特化一个类,如下:

  template <>

  class Box<Cat>{...},这种情况下,就不再实例化模版类了,Box<Cat>可以声明自己的接口,可能就没有了XXX。那么,问题出现了,BigBox继承Box<T>,但是父类Box<T>可能有接口XXX,也可能没有接口XXX,编译器傻眼了。那么还要不要继承父类Box<T>的XXX方法呢?因为不确定一定有,所以不继承,导致上面的情况编译失败。

3、怎么解决?

  解决办法很简单,就是明确说,我要继承父类Box<T>的方法。

  a、使用this->XXX();

  b、使用using Box<T>::XXX;

  c、使用Box<T>::XXX();

  第三种办法不好,因为会关闭virtual绑定行为。

转载地址:http://erojx.baihongyu.com/

你可能感兴趣的文章
Zabbix之配置文件详解
查看>>
中小企业信息化建设的一点思考
查看>>
Git 的origin和master分析(转)
查看>>
JAVA BEAN 与 EJB 区别
查看>>
宇宙沸腾SCCM 2012 R2系列(2)安装SQL Server,扩展AD架构
查看>>
第十二章 LNMP架构
查看>>
安装如Epson LQ-300K等老式打印机方法和心得
查看>>
sed显示行数
查看>>
lync 客户端通讯录更新脚本
查看>>
Hibernate之QBC持久层封装(一)
查看>>
我的友情链接
查看>>
mysql+heartbeat+DRBD+LVS实现mysql高可用<二>
查看>>
EMC VNX系列技术存储介绍之1--几个重要的基本概念
查看>>
20分钟教你学会熟练使用ansible
查看>>
我的自娱自乐的小习惯
查看>>
css中的:not选择的使用
查看>>
站点地图和SiteMapPath控件的使用
查看>>
Bootstrap优秀模板-ColorAdmin.4.3.0
查看>>
Java书籍经典Top10
查看>>
4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间
查看>>