Effective C++規定45追加コード

2160 ワード

この部分は追加のコードブログであり、肝心な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; 

}

$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('
').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});