OurString& OurString::operator=(const OurString& str) { if (this == &str) return *this; if(ptr != NULL) { delete [] ptr; } ptr = new char[str.len + 1]; assert(ptr != 0); ptr = strcpy(ptr, str.ptr); len = str.len; return *this; } 你可以把上述的参数改成const char *str吗
时间: 2024-03-23 10:35:57 浏览: 70
C++ 模板写的短小字符串类,用于替换字符数组和std::string
5星 · 资源好评率100%
可以修改参数为`const char* str`,但是在代码中需要修改一些地方。由于现在的参数类型是指向字符数组的指针,我们不能像之前那样使用`str.len`,因为指针没有`len`属性。我们需要在代码中添加一行来计算字符串长度,例如使用`strlen(str)`函数来获取字符串的长度。修改后的代码如下:
```
OurString& OurString::operator=(const char* str) {
if (ptr != NULL) {
delete[] ptr;
}
len = strlen(str);
ptr = new char[len + 1];
assert(ptr != 0);
ptr = strcpy(ptr, str);
return *this;
}
```
需要注意的是,在这个函数中我们没有检查`str`是否为空指针。如果`str`是空指针,那么调用`strlen(str)`函数将会导致程序崩溃。因此,在实际使用中,我们需要在函数开头添加一行代码来检查`str`是否为空指针。
阅读全文