#include <iostream>
#include <string.h>
using namespace std;
class String{
public:
String(const char *_data = nullptr); //构造函数
String(const String &other); //拷贝构造函数
String & operator=(const String &other); //赋值函数
~String(){ //析构函数
delete [] data;
}
friend ostream & operator<<(ostream &os,const String &other);
private:
char *data;
};
//构造函数
String::String(const char *_data)
{
if(_data == nullptr){
data = new char[1];
*data = '\0';
}else{
data = new char[strlen(_data) + 1];
strcpy(data,_data);
}
}
//拷贝构造函数
String::String(const String &other)
{
data = new char[strlen(other.data)+1];
strcpy(data,other.data);
}
//赋值函数
String & String::operator=(const String &other)
{
if(this == &other)
return *this;
if(data)
delete [] data;
data = new char[strlen(other.data)+1];
strcpy(data,other.data);
return *this;
}
//流输出函数
ostream & operator<<(ostream &os,const String &other)
{
os << other.data << endl;
return os;
}
int main(int argc,char *argv[])
{
String a = "aaa";
String b = a;
String c;
c = b;
cout<< a;
cout<< b;
cout<< c;
return 0;
}
string的实现
最新推荐文章于 2022-09-23 05:42:37 发布