条款45:运用成员函数模板接受所有兼容类型
来源:互联网 发布:ardupilot3.3源码下载 编辑:程序博客网 时间:2024/05/22 13:07
/*条款45:运用成员函数模板接受所有兼容类型*///真实指针做得好的一点是支持隐式转换,子类指针->基类指针,非常对象指针->常对象指针#include<iostream>using namespace std;class Top{};class Middle:public Top{};class Bottom:public Middle{};/*Top*pt1 = new Middle;//子类到基类的指针转换Top*pt2 = new Bottom;//孙子类到基类指针转换const Top*pct2 = pt1;//非常转换常的指针转换*//*template<typename T>class SmartPtr{public:explicit SmartPtr(T*realPtr);};SmartPtr<Top>pt1=SmartPtr<Middle>(new Middle);//将SmarPtr<Middle>转换为SmartPrt<Top>SmartPtr<Top>pt2=SmartPtr<Bottom>(new Bottom);SmartPtr<const Top>pct2 = pt1;//然而上面三个转换并不成立,因为他们实例出的对象没有继承关系我们想的是怎么编写出一个智能指针的构造函数来满足我们的转型需要,并且有通用性这时我们想到了成员模板*/template<typename T>class SmartPtr{public:template<typename U>//SmartPtr(const SmartPtr<U>&other);//这里可以根据SmartPtr<U>生成一个SmartPtr<T>,而u和v的类型是同一个template的不同具现体,我们称之为泛化拷贝构造函数//而这个构造函数也并未声明为explicit是蓄意的,因为原始指针类型之间的转换是隐式转换,所以让智能指针仿效这种行径也属合理//如果这里想提供一个和智能指针的一个get成员函数返回智能指针对象所持有的那个原始指针 的副本,我们可以在构造模板中实现代码中的约束转换行为SmartPtr(const SmartPtr<U>&other):heldPtr(other.get()){}T*get()const{return heldPtr;}private:T* heldPtr;}//成员函数模板常扮演的另一个角色是支持赋值操作template<class T>class shared_ptr{public:template<class Y>explicit shared_ptr(Y*P);template<class Y>shared_ptr(shared_ptr<Y>const&r);template<class Y>explicit shared_tr(weak_ptr<Y>const&r);template<class Y>explicit shared_ptr(auto_ptr<Y>&r);template<class Y>shared_ptr&operator=(shared_ptr<Y> const&r);template<class Y>shared_ptr&operator=(auto_ptr<Y>&r);//.上面的构造函数除泛化拷贝构造函数外都 是explicit,就是说可以由一个auto_ptr可以隐式转换成另一个auto_ptr,内置类型则不可以 ,除此之外还需要声明正常的拷贝构造和拷贝赋值.}int main(){return 0;}
0 0
- 条款45:运用成员函数模板接受所有兼容类型
- 条款45:运用成员函数模板接受所有兼容类型。
- 条款45:运用成员函数模板接受所有兼容类型
- 条款45:运用成员函数模板接受所有兼容类型
- Effective C++:条款45:运用成员函数模板接受所有兼容类型
- 运用成员函数模板接受所有兼容类型
- Effective C++ 45条 成员模板--运用成员函数模板接受所有兼容类型
- Effecticve学习笔记_条款45:运用成员函数模板接收所有兼容类型
- 《Effective C++》读书笔记之item45:运用成员函数模板接受所有兼容类型
- C++之运用成员模板接受所有兼容类型(45)---《Effective C++》
- Item 45:使用成员函数模板来接受所有兼容的类型
- Effective C++ Item 45 运用成员函数模板接收所有兼容类型
- effective C++之运用成员函数模板接收所有兼容类型
- C++箴言:用成员函数模板接受兼容类型
- C++箴言:用成员函数模板接受兼容类型
- C++箴言:用成员函数模板接受兼容类型
- [翻译] Effective C++, 3rd Edition, Item 45: 用 member function templates(成员函数模板) 接受 "all compatible types"(“所有兼容类型”)
- 条款46:需要类型转换时请为模板定义非成员函数
- php冒泡排序
- 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----其他(攻击方式)篇
- 数据结构实验1-顺序表-各种操作
- 02_栈
- HttpServletRequest.getParameter()出现乱码现象解决方案
- 条款45:运用成员函数模板接受所有兼容类型
- android开发环境搭建
- JAVA泛型擦除机制
- 忙,忙,忙!
- Java循环链表实现约瑟夫环
- 工具类共享:随机SDcard填充
- 【算法导论】求最大子数组
- JavaScript高级程序设计之面向对象的程序设计之创建对象之稳妥构造函数模式 第6.2.7讲笔记
- 百分制分数到等级分数