zoukankan      html  css  js  c++  java
  • 【43】学习处理模版化基类内的名称

    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绑定行为。

  • 相关阅读:
    css-box-shadowing
    css- :before :after
    css: line-height 与box-sizing
    金蝶数据库后台追踪
    钉钉审批开发,空白内容
    asp.net c#语言实现钉钉鉴权验证
    钉钉事件回调c#测试完成
    钉钉C#发起审批实例demo
    asp.net c#语言实现钉钉鉴权验证
    图片码
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3514218.html
Copyright © 2011-2022 走看看