#include <iostream>
#include <cstring>
using namespace std;
class strings //定义strings类
{
char *str;
static int num; //静态成员用来计数
int len;
public :
strings() //定义默认构造函数。
{
len=0;
str = new char[len+1];
str[0]='\0';
num++;
cout<<"new "<<num<<" "<<str<<endl;
}
strings(const char *s) //复制构造函数
{
len = strlen(s);
str = new char[len+1];
strcpy(str,s);
num++;
cout<<"new "<<num<<" "<<str<<endl;
}
strings(const strings &s)
{
len = s.len;
str = new char[len+1];
strcpy(str,s.str);
num++;
cout<<"new "<<num<<" "<<str<<endl;
}
strings& operator=(const strings &s)
{
if(this == &s) return *this;
delete [] str; //先释放str 所指区域
len = s.len;
str = new char[len+1];
strcpy(str,s.str);
// num++;
cout<<"evalue "<<num<<" "<<str<<endl;
return *this;
}
~strings()
{
num--;
cout<<"delete "<<num+1<<" "<<str<<endl;
delete [] str;
}
char * getstr(){
return str;
}
friend ostream & operator<<(ostream & os,const strings & s)
{
os <<s.str;
return os;
}
};
int strings::num = 0;
void main ()
{
strings str1("bug1");
strings str2=str1; // 调用 复制构造函数
strings str3="bug2";
strings str4;
str3 = str2; //重载 赋值运算符
}
写个简单string类
最新推荐文章于 2022-12-05 22:25:25 发布