目录
代码:
#include <iostream>
#include <string>
#include<string.h>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
//无参构造
my_string(){}
//有参构造
my_string(char *s,int l)
{
str = s;
//str = new char(s);
len = l;
}
//拷贝构造
my_string(const my_string &m)
{
this->len = m.len;
this->str = m.str;
}
//拷贝赋值
my_string &operator = (const my_string &r)
{
if(this != &r)
{
this->len=r.len;
this->str = r.str;
}
return *this;
}
//输出
void display()
{
for(int i=0;i<strlen(str);i++)
{
cout<<*(str+i);
}
cout<<'\t'<<len<<endl;
}
//判空
bool my_empty()
{
return *str==NULL?1:0;
}
//求长度
int my_size()
{
int count=0;
for(int i=0;i<strlen(str);i++)
{
count++;
}
return count;
}
int my_size2()
{
return sizeof(str);
}
//转化为c风格字符串
char *my_str()
{
return str;
}
};
int main()
{
my_string s1("hhf",12),s2("hjd",10);
s1.display();
my_string s3=s2;
s3.display();
s1=s2;
s1.display();
my_string s4("",12);
int eq = s4.my_empty();
if(eq == 1)
{
cout<<"str is empty"<<endl;
}
else if(eq == 0)
{
cout<<"str is no empty"<<endl;
}
int res = s2.my_size();
cout<<res<<endl;
s2.my_str();
int res2 = s2.my_size2();
cout<<res2<<endl;
return 0;
}
执行结果: