编写对字符串进行比较、运算的成员函数或友元函数(通过重载运算符实现)
时间: 2024-10-08 12:23:39 浏览: 36
在编程中,为了使代码更简洁和易于理解,我们可以选择重载标准的运算符来创建特定于字符串的比较和运算功能。例如,在C++中,我们通常会为字符串类型重载`==`, `!=`, `<`, `>`, `<=`, `>=`等比较运算符以及`+`和`=`来进行拼接或赋值操作。
对于成员函数,如果有一个名为`String`的类表示字符串,可以这样实现:
```cpp
class String {
public:
// 比较两个字符串是否相等
bool operator==(const String& other) const { return str == other.str; }
bool operator!=(const String& other) const { return str != other.str; }
// 字符串大小比较
bool operator<(const String& other) const { return str < other.str; }
// 其他比较运算符类似,这里省略
// 运算符+用于拼接字符串
friend String operator+(const String& left, const String& right);
};
// 实现拼接操作
String operator+(const String& left, const String& right) {
// ...拼接逻辑...
}
// 类似地,还可以重载赋值运算符=
String& String::operator=(const String& other) {
if (this != &other) {
str = other.str;
}
return *this;
}
```
对于友元函数,它并不属于类的一部分,但可以直接访问类的私有数据。比如,将上述的拼接操作作为友元函数定义:
```cpp
class String {
private:
std::string str;
public:
// ...其他成员函数...
friend std::string operator+(std::string left, const String& right);
};
// 友元函数实现拼接
std::string operator+(std::string left, const String& right) {
// ...拼接逻辑...
}
```
阅读全文