首页 > 编程语言 > 详细

Effective C++条款45 附加代码

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

本节是对上一篇博客的附加代码,基本的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 附加代码

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!