仿照string类,写一个my_string类
class
my_string
{
private
:
char
*
str
;
int
len
;
publuc
:
//
无参构造
//
有参构造
//
拷贝构造
//
拷贝赋值
//bool my_empty()
判空
//int my_size()
求长度
//char *my_str()
转化为
c
风格字符串
}
要求:前四个必须实现,后三个尽力而为
#include <iostream>
#include <string>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
//无参构造函数
my_string()
{
cout<<"no"<<endl;
}
//有参构造函数
my_string(char *a)
{
len = length(a);
str = new char[len];
for(int i=0;i<len;i++)
{
str[i] = *(a+i);
}
cout<<"have"<<endl;
}
//拷贝构造函数
my_string(const my_string& s)
{
len = s.len;
str = new char[len];
for(int i=0;i<len;i++)
{
str[i] = s.str[i];
}
cout<<"copy over"<<endl;
}
//拷贝赋值函数
my_string& operator =(const my_string& s)
{
len = s.len;
str = new char[len];
for(int i=0;i<len;i++)
{
str[i] = s.str[i];
}
return *this;
}
//析构函数
~my_string()
{
delete str;
}
//show
void show()
{
cout<<"str="<<str<<endl;
}
//判空
void if_empty()
{
if(len == 0)
{
cout<<"empty"<<endl;
}
else
{
cout<<"have number"<<endl;
}
}
//求长度
int length(char *a)
{
len = 0;
while(*a != '\0')
{
len++;
a++;
}
cout<<"len="<<len<<endl;
return len+1;
}
//转化为C语言字符串
// void c_lang()
// {
// str[len+1] = '\0';
// }
};
int main()
{
my_string s1("aaa"); //have
s1.show();
s1.if_empty();
my_string s2; //no
s2 = s1; //copy =
s2.show();
s1.if_empty();
my_string s3 = s2;
s3.show();
s1.if_empty();
return 0;
}