Effective C++规定45 额外的代码
2015-06-22 14:15
274 查看
这部分是额外的代码博客,关键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; }
相关文章推荐
- Fedora 22 for arndale octa board
- bufferreader与bufferwrite以及用法与readline()方法原理自述总结
- visual studio code 调试 sails.js
- 前端世界的憧憬
- CSS3感应鼠标背景闪烁和图片缩放效果
- Javascript原型与对象等知识
- JavaScript 2048小游戏
- 高性能JavaScript笔记一(加载和执行、数据访问、DOM编程)
- javascript
- Bootstrap 基本用法(续)
- 使用jQeury控制form动态发送请求
- 使用css3伪元素制作时间轴并且实现鼠标选中高亮效果
- Bootstrap 基本用法
- ReactNavtive框架教程(1)
- javascript面向对象
- HTML页面加载和解析流程
- 什么时候需要使用eval转换json
- Bootstrap3 CSS中引用,列表,描述
- javascript学习笔记(变量篇)
- 北京络捷斯特物流系统(四)