发布网友 发布时间:2022-04-21 15:27
共1个回答
热心网友 时间:2023-11-14 21:17
以下是一个实现所需功能的 C++ 程序示例。我们定义了一个 String 类,实现了构造函数、复制构造函数、析构函数、设置新值函数 Set、打印成员值函数 Print,以及 6 个关系运算操作符的重载。
#include <iostream>
#include <cstring>
class String {
private:
char* str;
public:
// 构造函数
String(const char* s) {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
// 复制构造函数
String(const String& s) {
str = new char[strlen(s.str) + 1];
strcpy(str, s.str);
}
// 析构函数
~String() {
delete[] str;
}
// 设置新值函数
void Set(const char* s) {
delete[] str;
str = new char[strlen(s) + 1];
strcpy(str, s);
}
// 打印成员值函数
void Print() const {
std::cout << str << std::endl;
}
// 重载关系运算操作符
bool operator==(const String& s) const {
return strcmp(str, s.str) == 0;
}
bool operator>(const String& s) const {
return strcmp(str, s.str) > 0;
}
bool operator<(const String& s) const {
return strcmp(str, s.str) < 0;
}
bool operator!=(const String& s) const {
return !(*this == s);
}
bool operator>=(const String& s) const {
return !(*this < s);
}
bool operator<=(const String& s) const {
return !(*this > s);
}
};
int main() {
String s1("abcd"), s2("abce");
if (s1 > s2)
std::cout << "s1 > s2!\n";
else if (s1 < s2)
std::cout << "s1 < s2!\n";
else if (s1 == s2)
std::cout << "s1 == s2!\n";
else if (s1 != s2)
std::cout << "s1 != s2!\n";
else if (s1 >= s2)
std::cout << "s1 >= s2!\n";
else if (s1 <= s2)
std::cout << "s1 <= s2!\n";
return 0;
}