class string
{
public:
string():data(0){
printf("string()/n");
data = new char[1];
*data = '/0';
}
string(const char* str):data(0){
printf("string(const char* s)/n");
if (str==NULL) return;
data = new char[strlen(str)+1];
memcpy(data, str, strlen(str));
data[strlen(str)] = '/0';
}
string(const string& str):data(0){
printf("string(const string& s)/n");
data = new char[strlen(str.data)+1];
memcpy(data, str.data, strlen(str.data));
data[strlen(str.data)] = '/0';
}
void operator=(const string& str){
printf("operator=(const string& s)/n");
if (data) delete []data;
data = new char[strlen(str.data)+1];
data[strlen(str.data)] = '/0';
memcpy(data, str.data, strlen(str.data));
}
~string(){
printf("~string()/n");
if (data) delete []data;
}
private:
char* data;
};
void main()
{
string a("a");
string b = "b";
string c(a);
string d = b;
}
运行结果:
string(const char* str)
string(const char* str)
string(const string& str)
string(const string& str)