c++day4

#include <iostream>

using namespace std;
class Complex
{
    friend ostream &operator<<(ostream &cout,Complex c1);
    friend istream &operator>>(istream &cin,Complex &c1);
private:
    int rel;
    int vir;
public:
    Complex() {}
    Complex(int rel,int vir):rel(rel),vir(vir){}
    bool operator^(const Complex c1)const;
    Complex operator~();

};

bool Complex::operator^(const Complex c1)const{
    return (c1.rel^c1.vir);
}
ostream &operator<<(ostream &cout,Complex c1){
    cout<<c1.rel<<c1.vir<<endl;
    return cout;
}
istream &operator>>(istream &cin,Complex &c1){
    cin>>c1.rel>>c1.vir;
    return cin;
}
Complex Complex::operator~(){
    rel=~rel;
    vir=~vir;
    return *this;
}
int main()
{
    Complex c1(1,1);
    cout<<c1.operator^(c1)<<endl;
    Complex c2;
    cin>>c2;
    cout<<c2<<endl;
    cout<<~c2<<endl;
    return 0;
}

#include <iostream>
#include <cstring>
using namespace std;
class Mystring
{
    friend ostream &operator<<(ostream &cout,Mystring s1);
    friend istream &operator>>(istream &cin,Mystring &s1);
private:
    char *str;
    int size;
public:
    //无参构造
    Mystring():str(nullptr),size(0){
        cout<<"无参构造"<<endl;
    }
    //有参构造
    Mystring(const char *str):str(nullptr),size(0){
        size=strlen(str);
        this->str=new char[size+1];
        strcpy(this->str,str);
        cout<<"有参构造"<<endl;
    }
//    Mystring(string s1):str(nullptr),size(s1.size()){
//        str=new char[size+1];
//        strcpy(str,s1.c_str());
//    }
    //拷贝构造
    Mystring(const Mystring &other){
        size=other.size;
        str=new char[size+1];
        strcpy(str,other.str);
        cout<<"拷贝构造"<<endl;
    }
    //拷贝赋值
    Mystring &operator=(const Mystring &other){
        if(&other!=this){
            delete []str;
            size=other.size;
            str=new char[size+1];
            strcpy(str,other.str);
        }
        return *this;
    }
    //析构函数
    ~Mystring(){
        delete [] str;
        cout<<"析构函数"<<endl;
    }
    //判空函数
    bool empty(){
        return size==0;
    }
    //size函数
    int len(){
        return size;
    }
    //c_str函数
    char *c_str(){
        return str;
    }
    //at函数
    char &at(int pos){
        if(pos<0||pos>=size){
            return *(str);
        }
        return *(str+pos);
    }
    //+运算重载
//    void operator+(const char *s1){
//        char *temp=new char[size];
//        strcpy(temp,str);
//        size=size+strlen(s1);
//        delete [] str;
//        str=new char[size];
//        strcpy(str,temp);
//        strcat(str,s1);
//    }
    void operator+(Mystring &s1){
        char *temp=new char[size];
        strcpy(temp,str);
        size=size+s1.size;
        delete [] str;
        str=new char[size];
        strcpy(str,temp);
        strcat(str,s1.c_str());
    }
    //关系运算符
    bool operator>(const Mystring s1)const{
        for(int i=0;i<size;i++){
            if(*(str+i)!=*(s1.str+i)){
                return *(str+i)>*(s1.str+i);
            }
        }
        return 0;
    }
    bool operator<(const Mystring s1)const{
        for(int i=0;i<size;i++){
            if(*(str+i)!=*(s1.str+i)){
                return *(str+i)<*(s1.str+i);
            }
        }
        return 1;
    }
};
ostream &operator<<(ostream &cout,Mystring s1){
    cout<<s1.c_str()<<endl;
    return cout;
}
istream &operator>>(istream &cin,Mystring &s1){
    if(s1.str!=nullptr){
        delete [] s1.str;
    }
    string s;
    cin>>s;
    s1.size=strlen(s.c_str());
    s1.str=new char[s1.size+1];
    strcpy(s1.str,s.c_str());
    return cin;
}
int main()
{
//    Mystring s1("world");
//    string s1="hello world";

//    Mystring s2(s1);
//    cout<<s2.c_str()<<endl;
//    Mystring s3;
//    s3=s2;
//    cout<<s3.c_str()<<endl;
//    cout<<s3.at(5)<<endl;
    Mystring s1("hello");
    Mystring s2("helloo");
    cout<<(s1>s2)<<endl;
    cout<<(s1<s2)<<endl;
    s1+s2;
    cout<<s1.c_str()<<endl;
//    Mystring s3;
//    cin>>s3;
//    cout<<s3<<endl;
    return 0;
}

相关推荐

  1. MSc CDA Take-Home

    2024-04-27 11:40:04       61 阅读
  2. CDA一级备考策略分享

    2024-04-27 11:40:04       32 阅读
  3. CDA-LevelⅡ【考题整理-带答案】

    2024-04-27 11:40:04       50 阅读
  4. Spring Data访问Elasticsearch----CDI集成

    2024-04-27 11:40:04       37 阅读
  5. CDA Level Ⅰ 2023认证考试大纲

    2024-04-27 11:40:04       79 阅读
  6. web server apache tomcat11-33-CDI

    2024-04-27 11:40:04       34 阅读
  7. Spring Data访问 MongoDB(十六)----CDI集成

    2024-04-27 11:40:04       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 11:40:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 11:40:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 11:40:04       87 阅读
  4. Python语言-面向对象

    2024-04-27 11:40:04       96 阅读

热门阅读

  1. 【Redis 开发】分布式锁中的常见问题和Lua脚本

    2024-04-27 11:40:04       28 阅读
  2. 使用 NVM 管理 Node.js 版本

    2024-04-27 11:40:04       32 阅读
  3. leetcode 27 原地删除有序数组

    2024-04-27 11:40:04       32 阅读
  4. 嵌入式前后台(Bare-Metal RTOS-Like)架构详解

    2024-04-27 11:40:04       30 阅读
  5. Kubernetes的原理及应用详解(五)

    2024-04-27 11:40:04       31 阅读
  6. ChatGPT-税收支持新质生产力

    2024-04-27 11:40:04       27 阅读
  7. Git Tag 打标签

    2024-04-27 11:40:04       33 阅读
  8. C#算法之归并排序

    2024-04-27 11:40:04       32 阅读
  9. 消费者处理消息失败如何解决

    2024-04-27 11:40:04       39 阅读