请定义一个名为 MyString 的类,该类中包含一个 char* 类型的数据成员,该类支持
以下操作:
- 实现类型转换函数 operator int() 和 operator double(),分别将 MyString 类型转换为 int 类型和 double 类型。
- 实现运算符重载 operator =,实现 MyString 类型之间的赋值操作。
- 实现运算符重载 operator +,实现 MyString 类型的字符串拼接操作。
- 实现运算符重载 operator == 和 operator !=,分别实现 MyString 类型的等于和不等于操作。
- 实现运算符重载 operator [],实现 MyString 类型的下标操作符。
- 实现运算符重载 operator <<,实现将 MyString对象的字符串输出到标准输出流。
两个char数组a,b、一个int型变量index,a,b均是字符串型的数值。
六行,分别表示各重载操作符的测试结果,详见样例和main函数
输入
12 34 1
11 11 3
输出
a = 12
b = 34
a is not equal to b
a + b = 1234
a[1] = 2
b[1] = 4
a = 11
b = 11
a is equal to b
a + b = 1111
a[3] = out of range
b[3] = out of range
需要在实现 operator + 和 operator [] 运算符重载时,考虑内存泄漏和数组越界的情况,并进行相应的处理。
在实现 operator << 时,需要注意字符指针类型的输出。
main function:
int main() {
char a[999], b[999];
int index;
while(cin>>a>>b>>index){
MyString s1(a), s2(b), s3;
int a_int = s1;
cout << "a = " << a_int << endl;
double b_double = s2;
cout << "b = " << b_double << endl;
if (s1 != s2){
cout << "a is not equal to b" << endl;
}
else{
cout << "a is equal to b" << endl;
}
s3 = s1 + s2;
if(s3 == s1 + s2){
cout << "a + b = "<< s3 << endl;
}
try {
cout << "a[" << index << "] = " << s1[index] << endl;
}
catch (const char* msg) {
cout << msg << endl;
}
try {
cout << "b[" << index << "] = " << s2[index] << endl;
}
catch (const char* msg) {
cout << msg << endl;
}
}
return 0;
}