美文网首页
运算符重载

运算符重载

作者: Vincy_ivy | 来源:发表于2019-05-11 22:48 被阅读0次

    在比赛前一天写万恶的C++,我的内心也真是够强大,看了党课材料,做了高数线代,看了matlab和Android的接口,已经接近崩溃的状态,codeblocks不知道怎么了,卡到要命,还是听话的用dev吧~emmm 写完c渣渣就睡叭,明早六点钟的闹钟┭┮﹏┭┮//逃
    补充一句:当时包菜师兄的矩阵快速幂用到了重载,咳咳,不过没看懂~真是打扰了

    Title

    设计一个字符串类MyString,使其只有1个私有成员:char str(指向字符串的指针); 该类具有构造函数、析构函数、复制构造函数,且具有其他成员函数:(参照上次作业),并为该类重载运算符加法"+="(相当于拼接),“=”(赋值,注意要深拷贝赋值),"[]"(返回取下标为index的字符)

    Code

    #include <bits/stdc++.h>
    using namespace std;
    
    class MyString{
    public:
        MyString(char *str):str(str){
            str=str;
        }
        MyString(MyString &s);
        string gets(){return str;}
        //+=重载 
        void operator+=(const MyString &s){
            strcat(str,s.str);
        }
        //=重载 
        void operator=(const MyString &s){
            str=new char[strlen(s.str)+1];
            strcpy(str,s.str);
        }
        //[]重载 
        char &operator[](int i){
            return str[i];
        }
    
        //顺便把输出也写了吧;
        friend ostream &operator<<(ostream &out,const MyString &s){
            out<<s.str<<endl;
            return out;
        }  
        //还有输入
        friend istream &operator>>(istream &in,const MyString &s){
            in>>s.str;
            return in;
        } 
    
    
        //析构 
        ~MyString(){cout<<"deleting"<<endl;}
        private:
            char *str;
        };
    
        MyString::MyString(MyString &s){
            cout<<"process"<<s.str<<endl;
        }
    
        int main()
        {
            char a[100],b[100];
            scanf("%s%s",a,b);  
            char *p=a;
            char *q=b;
            MyString m(p),n(q),l(a);
            m+=n;
            cout<<"1下标输出的结果:"<<m.gets()[1]<<endl;
            cout<<"+=结果为:"<<m.gets()<<endl;
            m=n;
            cout<<"=结果为:"<<m.gets()<<endl;
            //cout<<m.gets()+n.gets();
            return 0;
        } 
    

    相关文章

      网友评论

          本文标题:运算符重载

          本文链接:https://www.haomeiwen.com/subject/cwofaqtx.html