技术在于交流、沟通,转载请注明出处并保持作品的完整性。


1.pointer-like class 类设计成指针那样,可以当做指针来用,指针有两个常用操作符(*和->),所以我们必须重载这两个操作

    /*简单实现一下智能指针的*与 -> 操作符*/
template <class T>
class shared_ptr_test { public:
T& operator* () const //重载*
{
return *px;
}
T* operator->() const //重载 ->
{
return px;
}
shared_ptr_test(T* p):px(p){};
private:
T * px; //指向class的一个指针
long pn;
};
struct Foo
{
// ...
void method(void) {};
}; int main()
{
shared_ptr_test<Foo> sp(new Foo); Foo f(*sp); //*作用后自动销毁
            //使px 指向Foo class sp->method(); //1.->作用后继续填充
             //2.== f->method(); sp->method() 会转换成 px->method();即Foo::method() return ;
}

这个时候我们就可以像使用指针那样使用这个class了


2.function-like classes 类可以像函数那样使用,那我们必须重载 func operator call 即[()] 操作符

template<typename T>
class lineFeed
{
public:
void operator()(const T &x)
{
cout<<x<<endl;
}
}; int main()
{
int tmp[]={,,,,};
for_each(tmp,tmp+,lineFeed<int>());
return ;
}

输出结果

参照<<侯捷 C++面向对象高级编程>>

最新文章

  1. 【Python数据分析】Python模拟登录(一) requests.Session应用
  2. 腾讯微博模拟登陆+数据抓取(java实现)
  3. 【WildCard Matching】cpp
  4. SharePoint用户控件编写的简单介绍
  5. ecshop--加载初始化文件
  6. activiti笔记三 Activiti问题重现
  7. socket简单通信
  8. 纯CSS绘制三角形
  9. mac的svn之cornerstone简易教程
  10. JAVA中IO和NIO的详解分析,内容来自网络和自己总结
  11. bootstrap悬浮顶部或者底部
  12. VS生成桌面应用程序
  13. Android ART
  14. php中for循环的应用1
  15. .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南
  16. Tomcat配置(三):tomcat处理连接的详细过程
  17. scrapy(网络爬虫)———CrawlSpider(规则爬虫)
  18. 强大的DataGrid组件[1]
  19. pycharm虚拟环境
  20. vue-cli打包后,图片路径不对

热门文章

  1. ubuntu 14.04 163镜像
  2. JavaScript 引用【转】
  3. s3cmd安装
  4. snapshot与release
  5. 20145103《JAVA程序设计》课程总结
  6. 20145301Java课程总结
  7. [ARC061E]すぬけ君の地下鉄旅行 / Snuke&#39;s Subway Trip
  8. BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&amp;树状数组
  9. LeetCode——Single Element in a Sorted Array
  10. WIN7环境安装informatica 提示 不能创建Domain或者node