【发布时间】:2013-02-25 04:16:43
【问题描述】:
我对这段代码有疑问...为什么它一直访问会员复制器
这是代码,这是一个名为string的类的成员函数。
string operator +(string &r) {
char *k = NULL;
k = new char[strlen(this->getstring()) + strlen(r.getstring()) + 1];
strcpy(k, this->getstring());
strcat(k, r.getstring());
string Z = k;
delete[] k;
return Z; // visits MemberWise Copier then destructs..
}
这是我的会员复印机..
string(string &p) : s(NULL)
{
setstring(p.getstring());
}
【问题讨论】:
-
由于您从该函数按值返回一个字符串,它需要调用复制构造函数来返回该副本。将 operator+ 更改为返回 string& 应该可以解决此问题。
-
@medgno 那将是一个错误,您不能返回对局部变量的引用。这里需要按值返回。
标签: c++ operator-overloading return