9月3日 C++

include <iostream>

include <cstring>

sing namespace std;

lass Stu

public:

//无参构造函数

Stu()

{

a=nullptr;

len=0;

}

//有参构造函数

Stu(const char *s)

{

if(s!=nullptr)

{

len=strlen(s);

a=new char[len+1];

strcpy(a,s);

}

else

{

a=nullptr;

len=0;

}

}

//析构函数

~Stu()

{

delete []a;

a=nullptr;

}

//拷贝构造函数

Stu (const Stu& other)

{

len=other.len;

a=new char[len+1];

strcpy(a,other.a);

}

//拷贝赋值函数

Stu& operator=(const Stu& other)

{

if(&other!=this)

{

len=other.len;

if(a==nullptr)

{

a=new char[len+1];

}

strcpy(a,other.a);

}

return *this;

}

const char *data()

{

if(a!=nullptr)

{

char *s=nullptr;

s=a;

return s;

}

else

{

cout << "空字符串无法展示" << endl;

return nullptr;

}

}

//连接字符串

const Stu operator+(Stu &R) const

{

Stu x;

if(a!=nullptr&&R.a!=nullptr)

{

x.len=len+R.len;

x.a=new char[len+1];

strcpy(x.a,a);

strcat(x.a,R.a);

return x;

}

else

{

cout << "空字符串无法拼接" << endl;

return x;

}

}

//不等于

const bool operator!=(Stu &R)const

{

if((a!=nullptr)&&(R.a!=nullptr))

{

if(strcmp(a,R.a)==0)

return 0;

else

return 1;

}

else

{

cout << "字符串不存在" << endl;

return 0;

}

}

//等于

const bool operator==(Stu &R)const

{

if(strcmp(a,R.a)==0)

return 1;

return 0;

}

//小于

const bool operator<(Stu &R)const

{

int x=strcmp(a,R.a);

if(x<0)

return 1;

else

return 0;

}

//小于等于

const bool operator<=(Stu &R)const

{

int x=strcmp(a,R.a);

if(x<0||x==0)

return 1;

return 0;

}

//大于

const bool operator>(Stu &R)const

{

int x=strcmp(a,R.a);

if(x>0)

return 1;

return 0;

}

//大于等于

const bool operator>=(Stu &R)const

{

int x=strcmp(a,R.a);

if(x>0||x==0)

return 1;

return 0;

}

//size

const int size()const

{

return strlen(a);

}

friend ostream& operator<<(ostream&L,const Stu&R);

friend istream& operator>>(istream& L, Stu& R);

private:

char *a;

int len;

;

stream& operator<<(ostream& L, const Stu&R)

{

L <<"字符串="<< R.a <<"长度=" << R.size() <<endl;

return L;

}

istream& operator>>(istream& L, Stu& R)

{

cout<<"请输入\n";

L >>R.a;

return L;

}

nt main(int argc, const char *argv[])

Stu s1("hello");

Stu s2("hell");

Stu s3;

s3=s1+s2;

cout << "s3=" << s3.data() << endl;

bool ret=s1!=s2;

cout << "s1!=s2 " << ret << endl;

ret=s1==s2;

cout << "s1==s2 " << ret << endl;

ret=s1<s2;

cout << "s1<s2 " << ret << endl;

ret=s1<=s2;

cout << "s1<=s2 " << ret << endl;

ret=s1>s2;

cout << "s1>s2 " << ret << endl;

ret=s1>=s2;

cout << "s1>=s2 " << ret << endl;

cin>>s3;

cout <<s3;

return 0;

相关推荐
Pluto_CSND2 小时前
Java中的静态代理与动态代理(Proxy.newProxyInstance)
java·开发语言
将编程培养成爱好3 小时前
C++ 设计模式《外卖骑手状态系统》
c++·ui·设计模式·状态模式
猿太极3 小时前
设计模式学习(3)-行为型模式
c++·设计模式
惊讶的猫4 小时前
LSTM论文解读
开发语言·python
獨枭4 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
随意起个昵称4 小时前
【递归】二进制字符串中的第K位
c++·算法
国服第二切图仔5 小时前
Rust开发之Trait 定义通用行为——实现形状面积计算系统
开发语言·网络·rust
mjhcsp5 小时前
C++ 循环结构:控制程序重复执行的核心机制
开发语言·c++·算法
A阳俊yi5 小时前
Spring Data JPA
java·开发语言