博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
成员函数模板
阅读量:4521 次
发布时间:2019-06-08

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

真实指针支持隐式转换:1)Derived class指针可以隐式转换为Base class指针;2)"指向non-const对象"的指针可以转换成"指向const对象"的指针。

智能指针:必须编写一个成员函数模板。因为我们无法写出所有的智能指针的构造函数,一旦Derived体系有新的补充就又要根据其他智能指针构造自己,实在太多了,根本不能写完。

因为一个template可以被无限量具现化,以至于生成无限量函数,所以我们不写构造函数,而是写一个构造模板,称为成员函数模板。

 

成员函数模板:

根据自己的理解,我认为成员函数模板其实就是放在class里面的函数模板。

如果声明member template用于"泛化copy构造"或"泛化assignment操作",你还是需要声明正常的copy构造函数和copy assignment操作符。

什么叫泛化构造函数呢?

template
classshared_ptr{public:template
explicit shared_ptr(Y* p);template
shared_ptr(shared_ptr
const& r); //泛化copy构造函数template
explicit shared_ptr(weak_ptr
const& r);template
explicit shared_ptr(auto_ptr
const& r);template
shared_ptr& operator=(shared_ptr
const& r); //赋值template
shared_ptr& operator=(auto_ptr
const& r);……};

 

当T和Y类型一样时,泛化copy构造函数就是普通的copy构造函数了。

转载于:https://www.cnblogs.com/qiushuixiaozhanshi/p/5717474.html

你可能感兴趣的文章
求旋转数组的最小元素
查看>>
jQuery ajax error函数(交互错误信息的获取)
查看>>
Gson解析Json数组
查看>>
Lintcode: Fast Power
查看>>
Pocket Gem OA: Log Parser
查看>>
枚举也能直接转换为对应的数值输出
查看>>
angularjs1-7,供应商
查看>>
BitSet
查看>>
Spring常用注解,自动扫描装配Bean
查看>>
(转载)深入理解WeakHashmap
查看>>
JAVA中的数组
查看>>
爬虫—使用Requests
查看>>
scrollIntoView()窗口滚动
查看>>
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
查看>>
使用ansible远程管理集群
查看>>
读jQuery源码释疑笔记3
查看>>
手把手教你jmeter压测--适合入门
查看>>
Sequelize+MySQL存储emoji表情
查看>>
RabbitMQ学习之Publish/Subscribe(3)
查看>>
[SCOI2010]生成字符串
查看>>