C++ 重写运算符的返回类型=
假设有以下代码:C++ 重写运算符的返回类型=,c++,C++,假设有以下代码: struct Tester { int value = 0; void operator=(const Tester& original) { value = original.value; } }; overriding operator=的目的是像普通赋值运算符一样使用它。此函数肯定会获取参数的“值”,并将其放入宿主对象的“值” 但是,其他程序员建议使用: Tester& operator=(const Tester& or
struct Tester
{
int value = 0;
void operator=(const Tester& original)
{
value = original.value;
}
};
overriding operator=的目的是像普通赋值运算符一样使用它。此函数肯定会获取参数的“值”,并将其放入宿主对象的“值”
但是,其他程序员建议使用:
Tester& operator=(const Tester& original)
{
value = original.value;
return *this;//edited
}
以测试仪的返回类型为参考。第一个函数将执行完全相同的操作。这为什么有用,又如何有用
第一个函数将执行完全相同的操作
不完全是。您发布的第二个版本省略了return
语句。所以它有未定义的行为。但一旦它被修复:
Tester& operator=(const Tester& original)
{
value = original.value;
return *this;
}
它可用于链接分配:
a = b = c;
您的void
版本无法用于的内容
第一个函数将执行完全相同的操作
不完全是。您发布的第二个版本省略了return
语句。所以它有未定义的行为。但一旦它被修复:
Tester& operator=(const Tester& original)
{
value = original.value;
return *this;
}
它可用于链接分配:
a = b = c;
您的
void
版本无法用于。这完全有道理。谢谢这完全有道理。谢谢用于为一个函数调用赋值。更好的编程实践。用于为一个函数调用赋值。更好的编程实践。