在运算符重载中,为什么使用const,给我一个例子
时间: 2024-03-25 18:39:02 浏览: 13
在C++中,运算符重载可以对自定义类型进行操作,使得这些类型能够像内置类型一样进行运算。在运算符重载的过程中,经常需要使用`const`关键字来修饰参数。这是因为在运算符重载中,我们希望保持类的内部状态不变,同时又能够对类进行运算。
以下是一个运算符重载函数中使用`const`的例子:
```c++
class MyString{
public:
MyString(); //构造函数
MyString(const char *str); //带参构造函数
~MyString(); //析构函数
MyString operator+(const MyString &rhs) const; //重载+运算符
private:
char *str;
};
MyString MyString::operator+(const MyString &rhs) const{
int len = strlen(str) + strlen(rhs.str) + 1;
char *tmp = new char[len];
strcpy(tmp, str);
strcat(tmp, rhs.str);
MyString result(tmp);
delete[] tmp;
return result;
}
```
在这个例子中,`MyString`类重载了`+`运算符,实现了两个字符串的拼接。注意到参数`rhs`前面有一个`const`关键字,表示`rhs`是一个常量引用,不会被修改。同时,`operator+`函数本身也被声明为`const`,表示该函数不会修改类的内部状态。这样做的好处是,避免了在运算符重载过程中对类的内部状态进行修改,提高了程序的健壮性和可读性。