运算符重载
#include <iostream>
#include <string>
#ifndef Pan_H
#define Pan_H
class Pan
{
friend Pan operator+(Pan &left, Pan &right);
friend std::ostream &operator<<(std::ostream &left, Pan &right);
friend std::istream &operator>>(std::istream &left, Pan &right);
private:
int _num = 0;
public:
Pan() : Pan(0){};
Pan(int num) : _num(num){};
~Pan();
Pan operator+(Pan &right)
{
Pan sum = *this;
sum += right;
return sum;
};
Pan &operator+=(Pan &right)
{
this->_num += right._num;
return *this;
}
std::string operator[](std::size_t n);
Pan &operator++();
Pan &operator++(int);
std::string &operator*() const;
int operator()(int num) const{
return num + this->_num;
}
explicit operator bool() const {
return this->_num != 0;
}
};
Pan::Pan()
{
}
Pan::~Pan()
{
}
Pan operator+(Pan &left, Pan &right)
{
return Pan(left._num + left._num);
};
std::ostream &operator<<(std::ostream &left, Pan &right)
{
left << right._num;
return left;
};
std::istream &operator>>(std::istream &left, Pan &right)
{
left >> right._num;
if (!left)
{
right = Pan();
}
return left;
}
bool operator==(Pan &left, Pan &right);
#endif
可调用对象域function
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
int sum(int l, int r);
int main()
{
vector<function<int(int, int)>> list;
list.push_back(sum);
list.push_back([](int l, int r){ return l + r; });
function<int(int, int)> fun1([](int l, int r){ return l + r; });
fun1(1, 2);
cout << "enter key" << endl;
cin.get();
return 0;
}