zoukankan      html  css  js  c++  java
  • 【45】运用成员函数模版接受所有兼容类型

    1、所谓智能指针,就是资源管理类,行为像指针。因为要对不同的类型的指针进行封装,所以智能指针是类模版。

    2、那么问题来了。对于原始指针,支持隐式类型转换,也就是说,父类指针可以指向子类指针。因此,我们当然期望,父类智能指针可以指向子类智能指针,但是,不同Base和Derived实例化出来的智能指针,是不同的类型,之间没有任何关系,更谈不上继承关系,肯定不能赋值。

    3、怎么解决呢?

      提供一个成员方法模版,对兼容的类型进行构造或者赋值。也就是copy构造模版和copy赋值模版。

    4、这里出现了一个问题,以copy构造模版为例,当copy构造模版的形参与类模版的形参一致,那么就退化为普通的copy构造,和用户定义(或者编译器生成)的一样了,这不就重复了吗?

      成员方法模版并不改变语言规则。也就是说,当前存在copy构造模版,如果用户没有定义copy构造,编译器还是会自动生成一个copy构造,copy赋值也是一样的道理。可以这样认为:成员方法模版的模版形参U 不等于类模版的模版形参T。

  • 相关阅读:
    redis排序【转载】
    程序员必读的30本书(转)
    Linux进程调度程序的具体细节(转)
    汉字转换拼音(网上找的js库)
    虚拟机配置host访问主机web
    301重定向的实现方法(转)
    浏览器关闭后,能继续执行的函数
    awk文本处理总结(转)
    DTD
    DOM编程艺术 4
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3531648.html
Copyright © 2011-2022 走看看