Item 45:使用成员函数模板来接受所有兼容的类型
Posted harttle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Item 45:使用成员函数模板来接受所有兼容的类型相关的知识,希望对你有一定的参考价值。
隐式类型转换
class Top;
class Middle: public Top;
class Bottom: public Middle;
Top *p1 = new Bottom;
const Top *p2 = p1;
SmartPtr<Top> p1 = SmartPtr<Bottom>(new Bottom);
SmartPtr<const Top> p2 = p1;
重载构造函数
template<typename T>
class SmartPtr
public:
template<typename U>
SmartPtr(const SmartPtr<U>& other);
;
兼容类型检查
template<typename T>
class SmartPtr
public:
template<typename U>
SmartPtr(const SmartPtr<U>& other): ptr(other.get());
T* get() const return ptr;
private:
T *ptr;
;
其他使用方式
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>
shared_ptr& operator=(shared_ptr<Y> const& r);
;
template<class T>
class shared_ptr
public:
shared_ptr(shared_ptr const& r);
template<class Y>
shared_ptr(shared_ptr<Y> const& r);
shared_ptr& operator=(shared_ptr const& r);
template<class Y>
shared_ptr& operator=(shared_ptr<Y> const& r);
;
本文地址:http://harttle.com/2015/09/13/effective-cpp-45.html
以上是关于Item 45:使用成员函数模板来接受所有兼容的类型的主要内容,如果未能解决你的问题,请参考以下文章
使用在内部结构定义中保存函数的类成员变量,这些函数将用作 unordered_map 对象的模板参数