请教高手: 实现上的选择
赋值函数, 动态分配内存, 有以下两种实现方法, 请教高手哪种更好一些, 为什么?
class MyString
{
private:
char *str;
...
public:
MyString & operator =(const MyString &);
...
};
方法一:
MyString &MyString::operator =(const MyString &myString)
{
char *temp = str; // 首先记录原始内存地址
str = new char[strlen(myString.str)+1]; // 申请新内存,并
// 赋给str
delete [] temp; // 删除原始内存
return *this;
}
方法二:
MyString &MyString::operator =(const MyString &myString)
{
char *temp = new char[strlen(myString.str)+1]; // 首先分配一块新内存
// 并赋给临时指针
delete [] str; // 删除原始内存
str = temp; // 令str指向新内存
return *this;
}