美文网首页
运算符重载

运算符重载

作者: 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;
    } 

相关文章

  • 运算符重载及其他约定

    7.1 重载算术运算符 重载二元算术运算符 重载复合赋值运算符 重载一元运算符 重载比较运算符 等号运算符:‘eq...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 2019-07-11 运算符的重载

    运算符的重载 重载运算符 (“::”,“.*”,“.”,“?:”)不能被重载。 重载运算符时,不能改变其本质,如不...

  • 运算符重载

    一.+号运算符重载 二.<<号运算符重载 三.指针运算符重载(智能指针)

  • C++运算符重载-下篇 (Boolan)

    C++运算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++运算符重载-上篇 (Boolan)

    C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

  • C++运算符重载详解

    运算符重载规则 1.被重载的运算符必须是已经存在的C++运算符,不能重载自己创建的运算符; 2.运算符被重载之后,...

  • 第十一章 使用类

    运算符重载 运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。...

  • 4.0 C++远征:重载运算符

    重载运算符 [TOC] 四、重载运算符 ​ 概念 : 给原有运算符赋予新功能。 ​ 本质 : 函数重载。 ...

网友评论

      本文标题:运算符重载

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