C++面向对象高级编程(七)point-like classes和function-like classes
2024-10-13 11:31:16
技术在于交流、沟通,转载请注明出处并保持作品的完整性。
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++面向对象高级编程>>
最新文章
- 【Python数据分析】Python模拟登录(一) requests.Session应用
- 腾讯微博模拟登陆+数据抓取(java实现)
- 【WildCard Matching】cpp
- SharePoint用户控件编写的简单介绍
- ecshop--加载初始化文件
- activiti笔记三 Activiti问题重现
- socket简单通信
- 纯CSS绘制三角形
- mac的svn之cornerstone简易教程
- JAVA中IO和NIO的详解分析,内容来自网络和自己总结
- bootstrap悬浮顶部或者底部
- VS生成桌面应用程序
- Android ART
- php中for循环的应用1
- .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南
- Tomcat配置(三):tomcat处理连接的详细过程
- scrapy(网络爬虫)———CrawlSpider(规则爬虫)
- 强大的DataGrid组件[1]
- pycharm虚拟环境
- vue-cli打包后,图片路径不对
热门文章
- ubuntu 14.04 163镜像
- JavaScript 引用【转】
- s3cmd安装
- snapshot与release
- 20145103《JAVA程序设计》课程总结
- 20145301Java课程总结
- [ARC061E]すぬけ君の地下鉄旅行 / Snuke&#39;s Subway Trip
- BZOJ 3192: [JLOI2013]删除物品 奇淫技巧&;树状数组
- LeetCode——Single Element in a Sorted Array
- WIN7环境安装informatica 提示 不能创建Domain或者node