1
已解决
c++有一个新特**:重载
重载函数:
超好理解的一个概念,就是同一函数不同参数的可以重复定义,如:
string Max(string a,string b){
return a>b?a:b;
}
int Max(int a,int b){
return a>b?a:b;
}
这样编译是不会报错的,在调用时编译器会加以区分
重载运算符
定义两个自定义类型,通过重载运算符可以直接使用>,<等运算符进行比较。最常用的例子就是string,有了重载运算符,再也不用记住那些什么strcmp,strcpy了。
重载运算符(我认为)本质上就是一个重载函数(可以视运算符为一种函数)
使用方法:
//例子1
struct Value{
int value;
};
//通用格式1:<返回值类型> operator <运算符> ( <参数(1个、2个或3个)> ){ <函数体> }
bool operator<(Value a,Value b){
return a.value<b.value;
}
//这样就可以使用<号比较Value类型了
//例子2
struct Value {
int value;
//适用于参数为2个的运算符(结构体/类内部)
//通用格式2:<返回值类型> operator <运算符> ( <参数:运算的另一对象> ){ <函数体> }
bool operator<(Value b) {
return value < b.value;
}
};
//这样就可以使用<号比较Value类型了
//例子3
struct Array {
int data[1000];
//数组取值运算符[]的重载
int &operator[](long long i) { //引用返回(修改有效)
return data[i];
}
};
//就可以使用[]运算符访问data数组了,如
Array a;
a[1] = 1;
cout << a[1];
以后有空再说一下自定义字面量