MOOC清华《面向对象程序设计》第3章:函数运算符重载实验

来源:互联网 发布:java连接ssh的jar包 编辑:程序博客网 时间:2024/06/05 17:00

实验一:

#include <iostream>using namespace std;class Test{public:int operator() (int a, int b){cout << "operator() called. " << a << ' ' << b << endl;return a + b;}};int main(){Test sum;int s = sum(3, 4); // sum 对象看上去像是一个函数,故也称“函数对象”cout << "a + b = " << s << endl; return 0;}


实验二:

#include <iostream>using namespace std;class Less{int thres_; // thres = threshold “门槛” public:Less(int th): thres_(th) {} // 构造函数(为空),初始化列表 bool operator() (int);  //函数运算符重载声明 };bool Less::operator() (int value){ //函数运算符重载定义 return (value < thres_);}void Filter(int* array, int num, Less fn){ // filter “过滤器” for(int i = 0; i < num; i++)if(fn(array[i])) cout << array[i] << ' ';cout << endl;}int main(){int array[5] = {1, -4, 10, 0, -1};int thres;cout << "thres: ";cin >> thres;Less less_than(thres);Filter(array, 5, less_than);return 0;}



阅读全文
0 0