CString CStrins::opearator+(CString b) {CString c; c.str = new char [strlen(this->str) + strlen(b.str)+1];strcpy(c.s为什么还要定义等号void Cstring::operator=(CString b) {delete this->str; this->str = new char[strlen(b.str) + 1];strcpy(this->str, b.str);}
时间: 2024-03-29 18:36:38 浏览: 10
在这个例子中,重载运算符 `+` 是用于将两个字符串连接起来生成一个新的字符串,而重载运算符 `=` 则是用于将一个字符串赋值给另一个字符串。
虽然在 `operator+` 函数中已经动态分配了内存,并将新的字符串赋给了 `c.str`,但是在 `operator=` 函数中,我们需要将一个字符串的内容复制到另一个字符串中,而不是简单地将指针赋值给另一个指针。因此,我们需要先删除 `this->str` 指向的内存,然后动态分配一块新的内存,并将另一个字符串的内容复制到这个新内存中,从而实现两个字符串的内容相等。
相关问题
CString CStrins::opearator+(CString b) {CString c; c.str = new char [strlen(this->str) + strlen(b.str)+1];strcpy(c.str, this->str); Strcpy(c.str+ strlen(this->str),b.str); return c; }用倒数第二行代码什么意思
倒数第二行代码 `strcpy(c.str+ strlen(this->str),b.str);` 的意思是将字符串 `b.str` 复制到 `c.str` 中,从 `c.str` 的第 `strlen(this->str)` 个字符开始复制。也就是说,先将 `this->str` 中的字符串复制到 `c.str` 中,然后再将 `b.str` 中的字符串接在 `this->str` 后面,最终得到一个新的字符串 `c.str`。
void Cstring::operator=(CString b) {delete this->str; this->str = new char[strlen(b.str) + 1];strcpy(this->str, b.str);}什么意思
这是C++中自定义字符串类Cstring中的一个重载赋值运算符函数。该函数的作用是将一个CString类型的字符串b赋值给当前对象所表示的字符串。
具体实现过程是:
1. 首先删除当前对象的str指向的内存空间,避免内存泄漏;
2. 然后根据b.str的长度申请一块新的内存空间,将b.str复制到这块新的内存空间中;
3. 最后将当前对象的str指向这块新的内存空间。
总之,这个函数的作用是实现字符串对象之间的赋值操作,使得当前对象和b对象的字符串内容相同。