c++的重载运算符问题.

来源:百度知道 编辑:UC知道 时间:2024/05/10 06:24:11
原程序如下:
#include <iostream.h>
#include<string.h>
class string
{
private:
char *str;
public:
string(char *s="")
{
int length=strlen(s);
str=new char[length+1];
strcpy(str,s);
}
~string()
{
delete[] str;
}
string & string::operator=(string & s)
{
delete[] str;
int length=strlen(s.str);
str=new char[length+1];
strcpy(str,s.str);
return(*this);
}
void display()
{
cout<<str;
}
};
void main()
{
string s1("welcome \n");
string s2;
s2=s1;
s1.display();
s2.display();
}
显示结果为输出两行welcome,有谁能在每一句后加上注释说明,小妹实在看不懂本程序.

#include <iostream.h> //包含输入输出头文件 cout cin <<
#include<string.h> //包含字符串处理头文件 strcpy strlen

class string // 自定义类型 类 string
{
private:
char *str; // 私有成员
public:
string(char *s="")
{
int length=strlen(s);
str=new char[length+1];
strcpy(str,s);
} // 构造函数 动态分配空间
~string()
{
delete[] str;
} // 析构函数 释放str指向的自由存储空间 不过建议写成
/*
if ( str != NULL )
{
delete[] str;
str = NULL;
}
*/
string & string::operator=(string & s)
{
delete[] str;
int length=strlen(s.str);
str=new char[length+1];
strcpy(str,s.str);
return(*this);
} // 拷贝赋值操作符重载 先把源对象的动态空间释放,然后分配新的空间,大小为目的对象的动态空间大小
// 为源对象的动态空间赋值
void display()
{
cout<<str;
// 打印str指向的自由存储空间的内容
}
};

void main()
{
string s