1.编写一个彩色字符串类ColorString,包含string类型str和string类型color两个私有变量。编写ColorString类两个构造函数,一个不带任何参数,另一个包含两个参数用于初始化str,color。 2.编写成员函数Display用于显示成员变量值。 3.编写一个圆类RedString(继承时基类中的color为red),公有继承ColorString类,编写对应的构造函数。 4.编写主程序,创建两个派生类对象,并分别调用显示函数,显示对象信息。 5.编写基类友元函数重载==运算符函数,实现str成员变量的==运算。在主程序中利用上面创建的两个对象测试所编写的运算符重载函数。
时间: 2024-03-21 21:40:54 浏览: 70
好的,我会按照您的要求回答问题,不会透露您的任何要求。
关于您的问题,我可以给出以下代码示例供参考:
```c++
#include <iostream>
#include <string>
using namespace std;
class ColorString {
protected:
string str;
string color;
public:
ColorString() { }
ColorString(string s, string c) : str(s), color(c) { }
void Display() {
cout << "\033[" << color << "m" << str << "\033[0m" << endl;
}
friend bool operator==(const ColorString& c1, const ColorString& c2) {
return c1.str == c2.str;
}
};
class RedString : public ColorString {
public:
RedString(string s) : ColorString(s, "31") { }
};
int main() {
ColorString c1("Hello", "32");
RedString c2("World");
c1.Display();
c2.Display();
cout << (c1 == c2) << endl;
ColorString c3("Hello", "32");
cout << (c1 == c3) << endl;
return 0;
}
```
解释一下代码:
首先定义了一个基类 `ColorString`,其中包含 `string` 类型的字符串和颜色,提供了两个构造函数和一个 `Display` 函数用于显示字符串和颜色。同时,重载了 `==` 运算符,用于比较两个 `ColorString` 对象的字符串是否相等。
然后定义了一个派生类 `RedString`,公有继承自 `ColorString`,并在构造函数中将颜色设置为红色。
最后,在 `main` 函数中创建了两个对象 `c1` 和 `c2`,分别为 `ColorString` 和 `RedString` 类型,并调用了它们的 `Display` 函数显示字符串和颜色。同时,也进行了两次 `==` 运算符的比较,测试了运算符重载函数的正确性。
阅读全文