C++ 重载函数调用运算符
2016-03-30 13:51
435 查看
01_重载函数调用运算符.cpp
02_函数对象应用场景.cpp
03_sort的一种内部实现.cpp
#include<iostream> using namespace std; class Func_call{ public: Func_call(){cout<<"Construction"<<endl;} ~Func_call(){cout<<"Destructor"<<endl;} //重载了函数调用运算符的类,在其调用运算符执行时,可以称作函数对象 bool operator()(int a , int b) { cout<<"operator()"<<endl; return a>b; } }; int main() { Func_call fc /*()*/;//具名对象 Func_call /**/ ();//匿名对象 fc(10,20); }
02_函数对象应用场景.cpp
#include<iostream> #include<algorithm> using namespace std; class Func_call{ public: Func_call(){cout<<"Construction"<<endl;} ~Func_call(){cout<<"Destructor"<<endl;} //重载了函数调用运算符的类,在其调用运算符执行时,可以称作函数对象 bool operator()(int a , int b) { cout<<"operator()"<<endl; return a<b; } }; int main() { int m[]={34,45,312,3,21,4,3246}; for(auto k:m) cout<<k<<" "; cout<<endl; sort(m,m+sizeof(m)/sizeof(m[0]), Func_call() ); cout<<"sorted:"<<endl; for(auto k:m) cout<<k<<" "; cout<<endl; }
03_sort的一种内部实现.cpp
#include<iostream> //#include<algorithm> using namespace std; class Func_call{ public: Func_call(){cout<<"Construction"<<endl;} ~Func_call(){cout<<"Destructor"<<endl;} //重载了函数调用运算符的类,在其调用运算符执行时,可以称作函数对象 bool operator()(int a , int b) { cout<<"operator()"<<endl; return a<b; } }; bool sort(int * start, int *end) { int i,j; for(i=0;i< end- start;i++) { for(j=0;j<end-start-i-1;j++) { if(start[j]>start[j+1]) { int t = start[j]; start[j]=start[j+1]; start[j+1] =t; } } } return true; } typedef bool(*COMPARE)(int ,int); bool sort(int * start, int *end, COMPARE compare) { int i,j; for(i=0;i< end- start;i++) { for(j=0;j<end-start-i-1;j++) { // if(start[j]>start[j+1]) if(!compare(start[j],start[j+1])) { int t = start[j]; start[j]=start[j+1]; start[j+1] =t; } } } return true; } bool comp(int a,int b) { // return a>b; //降序 return a<b; //升序 } int main() { int m[]={34,45,312,3,21,4,3246}; for(auto k:m) cout<<k<<" "; cout<<endl; // sort(m,m+sizeof(m)/sizeof(m[0])); sort(m,m+sizeof(m)/sizeof(m[0]),comp); cout<<"sorted:"<<endl; for(auto k:m) cout<<k<<" "; cout<<endl; }
相关文章推荐
- c++ 重载类型转换运算符
- C++ 重载解引用_迭代器
- c++ 优化的动态数组 Vector
- C语言编程之你不知道的事——回调函数
- C++ 重载赋值运算符
- C++ 重载中括号
- 罪犯转移
- C++ 重载输出符号
- C++ 单目运算 and 双目运算符重载complex
- C++运算符重载范例
- c++ 运算符重载之成员函数重载
- C++复习笔记
- c++ 友元函数
- c++ static 类
- c语言:顺序栈的应用(二) 判断回文数
- 【Python】SWIG 和 Python——c/c++与脚本交互
- C++编译器函数模版机制剖析 - 函数模版的本质
- c++涉及继承和虚继承时的内存布局
- 作业:C++作业2
- 二分查找C++