码迷,mamicode.com
首页 > 编程语言 > 详细

Effective C++条款45 附加代码

时间:2015-06-07 17:34:06      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:template

本节是对上一篇博客的附加代码,基本的45条款思想已经实现。

#include<iostream>
using namespace std;

template<typename T>
class SharedPtr
{
public:
    template<typename U>
    SharedPtr(const SharedPtr<U>&u) :ptr(u.get())
    {
        count++;
    }
    SharedPtr(T*ptr_):ptr(ptr_){}
    T*get()const{ return ptr; }
    ~SharedPtr()
    {
        if (1 == count)
        {
            count--;
            delete ptr;
            ptr = NULL;
        }
    }
private:
    T* ptr;
    int count;

};

class A{};
class B :public A{};
class C{};



int main()
{
    SharedPtr<B> b1(new B());
    SharedPtr<C> c1(new C());
    SharedPtr<A> a1 = b1;
    SharedPtr<A> a2 = c;//不能通过编译

    return 0; 

}

Effective C++条款45 附加代码

标签:template

原文地址:http://blog.csdn.net/u011058765/article/details/46401335

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!