帮忙编一个c++运算符重载的程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 20:32:14
(运算符重载)
需要完成一个特殊的字符串类FunnyString,该类对象的运算符定义如下:
 加法:字符串A加字符串B的结果为字符串B联入字符串A尾部,如果遇到相同的字母则这两个字母抵消,依次类推。如:
abc + cbe的结果为ae
 减法:字符串A减字符串B的结果为取B中的每一个字符在A中进行检索,如果有相同字符则将该字符从A中删去,依次类推。如
abc – cde 的结果为ab
 乘法:字符串A乘字符串B的结果为字符串B的第一个字符插入字符串A的第一个字符后,B的第二个字符插入A的第二个字符后,依次类推。如
abc * def 的结果为 adbecf
其他运算符的定义与普通字符串操作没有区别。
完成FunnyString类的基本功能,重载+,-,*,=, +=, -=, <<, >>运算符,编写一个测试程序,一次运行测试程序的结果如下:
Please input s1: abcd
Please input s2: dabf
s1 + s2 is abcabf
s1 – s2 is c
s1+= s2 is abcabf
s1 -= s2 is c
s1 * s2 is adbacbdf

String String::operator + ( String &string )
{
int len1 = len;
int len2 = string.len;
int len0 = len1 + len2;
char *string0 = new char[len0+1];
strcpy( string0 , str );
strcat( string0 , string.str );
String resultString( string0 );
delete[]string0;
return resultString;
}

减法的你在加的上面改一下吧。。增加一个拷贝函数就好了。。至于乘的嘛我看看。。

先将它们连起来
再将相邻相同的去掉

mark一下以后来学习。