Effective C++规定45 附加代码
2015-12-13 20:00
288 查看
这部分是额外的代码的博客。键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; }
相关文章推荐
- jQuery之call()方法的使用
- 【JS】浅谈匿名函数与闭包
- Now--Feature--Thinking
- 10个免费的响应式布局HTML5+CSS3模板
- #学习笔记#(16)ul li 二级下拉菜单-jQuery
- 从prototype.js中学习到的js封装
- 《Node.js In Action》笔记之流程控制
- JSTL 核心标签库 使用 (转)
- Famitracker 效果列表(Effect list)
- 初探nodejs创建web服务器
- json(转)
- Node.js(转) -- 临时来说还看不懂!
- 10012---JavaScript--保留关键字
- jQuery? 回归JavaScript原生API
- javascript转义字符
- javascript转义字符
- 20151113--JSTL
- jquery特效(8)—倒计时
- bootstrap心得
- 基于NodeJS实现的一个css预处理器