1.编写一个彩色字符串类ColorString,包含string类型str和string类型color两个私有变量。编写ColorString类两个构造函数,一个不带任何参数,另一个包含两个参数用于初始化str,color。 2.编写成员函数Display用于显示成员变量值。 3.编写一个圆类RedString(继承时基类中的color为red),公有继承ColorString类,编写对应的构造函数。 4.编写主程序,创建两个派生类对象,并分别调用显示函数,显示对象信息。 5.编写基类友元函数重载-运算符函数,实现str成员变量的-运算。在主程序中利用上面创建的两个对象测试所编写的运算符重载函数。
时间: 2024-03-20 20:44:06 浏览: 46
好的,我已经记下了你的问题。下面是代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class ColorString {
private:
string str;
string color;
public:
ColorString() {
str = "";
color = "";
}
ColorString(string s, string c) {
str = s;
color = c;
}
void Display() {
cout << "\033[" << color << "m" << str << "\033[0m" << endl;
}
friend string operator-(const ColorString& cs1, const ColorString& cs2) {
return cs1.str - cs2.str;
}
};
class RedString : public ColorString {
public:
RedString(string s) : ColorString(s, "31") {}
};
int main() {
ColorString cs("Hello world", "32");
RedString rs("This is a red string");
cs.Display();
rs.Display();
string result = cs - rs;
cout << result << endl;
return 0;
}
```
这个程序实现了一个彩色字符串类`ColorString`,它包含两个私有成员变量:`str`表示字符串内容,`color`表示颜色。`ColorString`有两个构造函数,一个不带参数,一个带两个参数用于初始化`str`和`color`。`ColorString`还有一个`Display`函数,用于显示字符串内容和颜色。`ColorString`还有一个重载了`-`运算符的友元函数,用于对比两个`ColorString`对象的`str`成员变量。
然后,我们定义了一个派生类`RedString`,它公有继承了`ColorString`类,且在构造函数中将`color`赋值为"31",表示红色。
在`main`函数中,我们创建了一个`ColorString`对象和一个`RedString`对象,并分别调用了它们的`Display`函数。然后,我们测试了`ColorString`类中重载的`-`运算符,将结果输出到屏幕上。
注意,在`Display`函数中,我们使用了特殊的字符序列来设置输出的颜色。这些特殊字符序列以`"\033["`开头,以`"m"`结尾,中间是一个数字,表示颜色。`"\033[0m"`表示重置颜色为默认值。
阅读全文