1 重载运算符是具有特殊名字的函数,由关键字operator和其后要定义的运算符号共同组成。当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的参数数量比运算对象的数量少一个;
2 通常情况下,不应该重载逗号、取地址、逻辑与和逻辑或运算符;
不能被重载的运算符 :: .* . ?:
3 重载输出运算符<<
ostream &operator<<(ostream &os, const int i){
os<<i<<" "<<endl;
return os;
}
4 算术和关系运算符
int operator+(const int &lhs, const int &rhs) {
int sum = lhs;
sum += rhs;
return sum;
}
5 赋值运算符
string operator=(string li) {
}
6 下标运算符
string *elements;
string &operator[](size_t n) {
return elements[n];
}
const string &operator[](size_t n) const {
return elements[n];
}
7 保存调用函数
map<string, int (*)(int, int)> binops;
int add(int i, int j) { return i + j; }
int main() {
binops.insert({"+", add});
}
重载函数与function
int add(int i, int j) { return i + j; }
int main() {
int (*fp)(int, int)= add;
binops.insert({"+", fp});
}