作业
仿照string类,写一个my_string类
1
class
my_string
2
{
3
private
:
4
char
*
str
;
5
int
len
;
6
publuc
:
7
//
无参构造
8
//
有参构造
9
//
拷贝构造
10
//
拷贝赋值
11
//bool my_empty()
判空
12
//int my_size()
求长度
14
}
15
要求:前四个必须实现,后三个尽力而为
#include <iostream>
#include <string>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
my_string() {} //无参构造
~my_string(){} //析构函数
my_string(char c,int i) //有参函数
{
this->str = new char[1];
for(int i=0;i<1;i++)
{
str[1]=c;
}
str[1]=0;
this->len=1;
}
//拷贝构造
my_string(const my_string& other)
{
this->len=other.len;
str = new char[other.len+1];
for(int i=0;i<other.len+1;i++)
{
str[i]=*(other.str+i);
}
}
//拷贝赋值
//拷贝赋值
my_string & operator=(const my_string & other)
{
delete this->str;
this->len=other.len;
str = new char[other.len+1];
for(int i=0;i<other.len+1;i++)
{
str[i]=*(other.str+i);
}
return *this;
}
//bool my_empty() 判空
bool my_empty()
{
if(len==0)
return true;
else
return false;
}
//int my_size() 求长度
int my_size()
{
return len;
}
//char *my_str() 转化为c风格字符串
char *my_str()
{
return str;
}
};
int main()
{
//验证有参构造
my_string str1("Hello World!");
cout<<"str1:"<<str1.my_str()<<endl;
my_string str2(10,'h');
cout<<"str2:"<<str2.my_str()<<endl;
//验证拷贝构造
my_string str3=str1;
cout<<"str3"<<str3.my_str()<<endl;
//验证赋值构造
my_string str4;
str4=str3;
//验证判空
my_string str5("");
if(str5.my_empty())
cout<<"str5空"<<endl;
else
cout<<"str5非空"<<endl;
if(str4.my_empty())
cout<<"str4空"<<endl;
else
cout<<"str4非空"<<endl;
//获取长度
int len=str1.my_size();
cout<<"str1长度为:"<<len<<endl;
return 0;
}