#include <iostream>
#include <cstring>
using namespace std;
class myString
{
private:
char *str; //记录c风格的字符串
int size; //记录字符串的实际长度
public:
//at
char myat(int n);
//c_str
char* c_str();
//size
int mysize();
//判空
int myempty();
//无参构造
myString():size(10)
{
str = new char[size]; //构造出一个长度为10的字符串
strcpy(str,"");
}
//有参构造
myString(const char *s)
{
size = strlen(s);
str = new char[size+1];
strcpy(str,s);
}
//拷贝构造
myString(const myString &other):size(other.size),str(new char(*(other.str)))
{
cout<<"拷贝构造"<<endl;
}
void show()
{
cout<<str<<endl;
cout<<size<<endl;
}
//析构函数
~myString()
{
cout<<"释放空间"<<&str<<endl;
delete str;
}
};
char myString::myat(int n)
{
if(n>0 && n<size)
{
return str[n];
}
else if(n>size)
{
return str[0];
}
}
int myString::myempty()
{
if(size==0)
{
cout<<"空"<<endl;
return 1;
}
else
{
cout<<"非空"<<endl;
return 0;
}
}
int myString:: mysize()
{
return size;
}
char*myString:: c_str()
{
return str;
}
int main()
{
int n=0;
myString s1("hello");
s1.show();
s1.myempty();
cout<<s1.mysize()<<endl;
cout<<"请输入查找位数"<<endl;
cin>>n;
cout<< s1.myat(n)<<endl;
myString s2=s1;
s2.show();
cout<<s2.myempty()<<endl;
cout<<s2.mysize()<<endl;
return 0;
}
3.27作业
于 2024-03-27 20:28:40 首次发布