#include <iostream>
#include <cstring>
using namespace std;
class mystring
{
char *str;
int size;
public:
mystring():size(0)//无参构造函数并初始化size = 0
{
str = new char[size];
strcpy(str,"");
cout<<"无参构造函数"<<endl;
}
mystring(const char *s)//有参构造函数
{
size = strlen(s);
str = new char[size+1];
strcpy(str,s);
cout<<"有参构造函数 "<<str<<" "<<size<<endl;
}
mystring(const mystring &other):size(other.size)//拷贝构造函数
{
str = new char[size];
strcpy(str,other.str);
cout<<"拷贝构造函数 "<<str<<" "<<size<<endl;
}
~mystring()//析构函数用于回收对象的内存空间
{
delete[] str;
str = nullptr;
cout<<"析构函数"<<endl;
}
int empty()const//判断字符串是否为空
{
if(strlen(str)==0)
{
cout<<"***************"<<endl;
cout<<"字符串为空"<<endl;
cout<<"***************"<<endl;
return 0;
}else
{
cout<<"字符串不为空"<<endl;
return -1;
}
}
int stringsize()
{
cout<<"字符串长度为"<<strlen(str)<<endl;
return strlen(str);
}
void c_str()const//输出字符串
{
if(empty()==0)
{
cout<<"字符串为空输出失败"<<endl;
}else
{
cout<<"str = "<<str<<endl;
}
}
char &at(int pos)//根据元素位置输出元素
{
if(pos<0||pos>=size)
{
cout<<"请输入合法的位置"<<endl;
}else
{
cout<<str[pos]<<endl;
}
return str[pos];
}
};
int main()
{
int pos;
mystring s1;
mystring s2("nihao");//调用有参构造函数
mystring s3(s2);//调用拷贝构造函数用s2给s3初始化
s1.empty();
s2.empty();
s3.empty();
s1.c_str();
s2.c_str();
s3.c_str();
cout<<"请输入查询的元素位置"<<endl;
cin>>pos;
s1.at(pos);
s2.at(pos);
s3.at(pos);
return 0;
}
C++ 作业 day2
于 2023-05-10 20:41:30 首次发布