问题标题: 重载函数/运算符

1
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];

 

以后有空再说一下自定义字面量


0
0
李宜和
李宜和
高级启示者
高级启示者

三个字完美说出对你的代码的评价:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

看不懂

我要回答