
本人刚接触c++,听了对这些定义的讲解也一头雾水,请问谁能帮忙解释一下,能给个例子最后Thanks♪(・ω・)ノ
class String
{
public:
String(const char* str = NULL);// 普通构造函数
String(const String& str); // 拷贝构造函数
~String(void); // 析构函数
String& operator = (const String& str);// 赋值函数
private:
char* m_data;// 用于保存字符串
int length;
};
String::String(const char* str)
{
if (NULL == str)
{
m_data = new char[1];// 得分点:对空字符串自动申请存放结束标志'\0'的,加分点:对m_data加NULL判断
m_data[0] = '\0';
length = 0;
}
else
{
length = strlen(str);
m_data = new char[length + 1];// 若能加 NULL 判断则更好
memcpy(m_data, str, length);
m_data[length] = '\0';
}
}
String::String(const String& str)// 得分点:输入参数为const型
{
length = str.length;
m_data = new char[length + 1]; // 若能加 NULL 判断则更好
memcpy(m_data,str.m_data,length);
m_data[length] = '\0';
}
// String的析构函数
String::~String(void)
{
length = 0;
delete[] m_data;
}
//赋值函数
String& String::operator = (const String& str) 得分点:输入参数为const型
{
if (this == &str) //得分点:检查自赋值
return *this;
if(m_data)
delete[] m_data; //得分点:释放原有的内存资源
length = str.length;
m_data = new char[length + 1];//加分点:对m_data加NULL判断
strcpy(m_data, str.m_data);
m_data[length] = '\0';
return *this;//得分点:返回本对象的引用
}