C++ c++;重载运算符=用于字符串
我在这里不知所措,如何有效地删除当前对象字符串,然后将输入的字符串复制到其中?您的错误在原型上:C++ c++;重载运算符=用于字符串,c++,C++,我在这里不知所措,如何有效地删除当前对象字符串,然后将输入的字符串复制到其中?您的错误在原型上: Word Word::operator= (const Word& RHS) const{ if(word != RHS.GetWord()){ } } 赋值运算符对常量对象无效,因此最后一个const无效。 此外,编译器无法诊断的缺陷(除非在需要左值的地方使用它),它应该通过引用返回 无论如何,由于一个成员一个成员的拷贝已经足够好了,所以定义自己的赋值运算符毫无意义:
Word Word::operator= (const Word& RHS) const{
if(word != RHS.GetWord()){
}
}
赋值运算符对常量对象无效,因此最后一个const
无效。此外,编译器无法诊断的缺陷(除非在需要左值的地方使用它),它应该通过引用返回 无论如何,由于一个成员一个成员的拷贝已经足够好了,所以定义自己的赋值运算符毫无意义:
使用默认值。如果
wordText
是std::string
,则根本不需要重写隐式定义。或者你是什么意思?我想你在找swap()
。是的wordText是一个字符串。C++阻止了我简单地说WordTeX= RS.GETWORD()。您能否扩展代码以显示最小但完整的Word
类?还要注意,赋值运算符应该返回对assigned to对象的引用,而不是副本。关于更新:如果这三个都是成员,编译器生成的赋值运算符就可以了。不要打字。(但示例仍然不完整。您没有显示Word
类的声明。)
Word Word::operator= (const Word& RHS) const{
// ^ ^^^^^ ???