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)
博客展示了一个C++自定义的string类,包含构造函数、拷贝构造函数、赋值运算符重载和析构函数等。通过代码实现了字符串的初始化、复制等操作,并给出了一段测试代码及运行结果,体现了该自定义类的基本功能。

被折叠的 条评论
为什么被折叠?



