Ryan_Li 发表于 2020-12-11 11:40:41

如何重载减法运算符,实现两个字符串相减,并给出主函数应用该类

如题 这个具体该怎么实现呢

sunrise085 发表于 2020-12-11 13:10:14

你没说清楚你想要实现什么
两个字符串怎么相减,你要说清楚啊。你不说清楚,别人怎么帮你?
比如两个字符串a="abcdefghijklmn",b="def",对于a-b,你想得到什么?
得到"abchijklmn",还是得到"abcdefghijk",还是得到11,还是得到其他的什么结果?
提问的时候要说清楚你的问题,否则别人如何帮你

Ryan_Li 发表于 2020-12-11 15:17:51

本帖最后由 Ryan_Li 于 2020-12-11 15:22 编辑

sunrise085 发表于 2020-12-11 13:10
你没说清楚你想要实现什么
两个字符串怎么相减,你要说清楚啊。你不说清楚,别人怎么帮你?
比如两个字符 ...

应该是要判断是否重复 然后减去 如"abcde"-"ce"="abd"

Ryan_Li 发表于 2020-12-11 15:21:01

sunrise085 发表于 2020-12-11 13:10
你没说清楚你想要实现什么
两个字符串怎么相减,你要说清楚啊。你不说清楚,别人怎么帮你?
比如两个字符 ...

http://tiebapic.baidu.com/forum/w%3D580/sign=355a3fffb11ea8d38a22740ca70b30cf/898c0064034f78f0f19612b76e310a55b2191cb2.jpg

xieglt 发表于 2020-12-12 09:35:19

你的需求还是很模糊,自己实现功能吧。

#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]
查看完整版本: 如何重载减法运算符,实现两个字符串相减,并给出主函数应用该类