如何重载减法运算符,实现两个字符串相减,并给出主函数应用该类
如题 这个具体该怎么实现呢 你没说清楚你想要实现什么两个字符串怎么相减,你要说清楚啊。你不说清楚,别人怎么帮你?
比如两个字符串a="abcdefghijklmn",b="def",对于a-b,你想得到什么?
得到"abchijklmn",还是得到"abcdefghijk",还是得到11,还是得到其他的什么结果?
提问的时候要说清楚你的问题,否则别人如何帮你 本帖最后由 Ryan_Li 于 2020-12-11 15:22 编辑
sunrise085 发表于 2020-12-11 13:10
你没说清楚你想要实现什么
两个字符串怎么相减,你要说清楚啊。你不说清楚,别人怎么帮你?
比如两个字符 ...
应该是要判断是否重复 然后减去 如"abcde"-"ce"="abd" sunrise085 发表于 2020-12-11 13:10
你没说清楚你想要实现什么
两个字符串怎么相减,你要说清楚啊。你不说清楚,别人怎么帮你?
比如两个字符 ...
http://tiebapic.baidu.com/forum/w%3D580/sign=355a3fffb11ea8d38a22740ca70b30cf/898c0064034f78f0f19612b76e310a55b2191cb2.jpg
你的需求还是很模糊,自己实现功能吧。
#include <iostream>
#include <string.h>
using namespace std;
class MyClass
{
public:
MyClass()
{
myString = NULL;
}
~MyClass()
{
if(myString != NULL)
{
delete myString;
myString = NULL;
}
}
//因为要返回在栈上的对象,必须重载拷贝构造函数
MyClass(const MyClass & str)
{
myString = NULL;
*this = str;
}
MyClass & operator = (const char * str)
{
if(myString != NULL)
{
delete myString;
myString = NULL;
}
myString = new char;
strcpy(myString,str);
return *this;
}
MyClass & operator = (const MyClass & str)
{
if(myString != NULL)
{
delete myString;
myString = NULL;
}
myString = new char;
strcpy(myString,str.myString);
return *this;
}
MyClass & operator -=(const MyClass & str)
{
//实现你需要的减法功能,你的需求太模糊,不知道怎么帮你实现。
//...
//
return * this;
}
//重载 "-" 运算符,返回在栈上分配的对象
friend MyClass operator - (const MyClass & src,const MyClass & dst)
{
MyClass temp = src;
temp -= dst;
return temp;
}
friend istream & operator >> (istream & in, MyClass & src)
{
char buffer = {0};
in >> buffer;
src = buffer;
return in;
}
friend ostream & operator << (ostream & out, const MyClass & src)
{
if(src.myString != NULL)
{
out << src.myString;
}
else
{
out << "object is not be initialized!";
}
return out;
}
private:
char * myString;
};
int main()
{
MyClass a,b;
cin >> a;
cin >> b;
MyClass c = a - b;
cout << c;
return 0;
}
页:
[1]