- C++中的赋值运算符(例如x = 5)会返回一个值,并将该值复制到变量中。赋值运算符返回的值(也就是结果是什么)是什么?
-1
A
回答
0
根据C++标准(5.18分配和复合赋值操作符)
1所述的赋值运算符(=)和化合物赋值运算符 所有组从右到左。都需要一个MODI音响能够左值作为它们的左 操作数和返回左值指的是左操作数
和
2在简单赋值(=),则表达式的值替换 左操作数引用的对象。
因此,如果您在下面的代码片段
int x;
x = 5;
则x得到值5和赋值表达式返回x的lvalue
。这使得赋值运算符,例如结合以下方式
(x = 5) += y;
因为表达x = 5
回报左值的x
。
在C中,此代码将无效,因为在C中赋值表达式返回rvalue
。
1
在C++中内置复制赋值运算符产生一个可分配给的左值表达式。实际上就好像它是用引用类型结果声明的一样。
对于类类型,用户定义的复制赋值运算符可以具有任何返回类型,包括(其中IMO将是理想的)void
。但是,如果一个类将被用作标准容器的项类型,那么它受制于标准库的需求,然后该类的复制赋值操作符必须返回对分配给该对象的对象的引用。
为了声明复制赋值运算符为删除或默认值,它必须返回对赋值对象类型的引用,例如
struct S
{
auto operator=(S const&) -> S& = delete;
};
用户定义的复制赋值运算符只能为一个类类型定义,而不是为枚举类型,因为它必须是一个非静态成员函数。
相关问题
- 1. C++ 11字符串赋值运算符
- 2. 移动赋值运算符VS拷贝赋值运算符
- 3. BigDecimal的赋值运算符
- 4. 赋值运算符 - 自赋值
- 5. C++重载赋值运算符
- 6. 重载C++赋值运算符
- 7. 按位赋值运算符在C#
- 8. C++赋值运算符关联
- 9. 移动赋值运算符C++
- 10. 重载赋值运算符C++
- 11. C++赋值运算解决
- 12. PHP赋值运算符=&
- 13. 重载赋值运算符
- 14. 赋值运算符在
- 15. 嫩枝赋值运算符
- 16. 重载赋值运算符
- 17. 赋值=运算符超载
- 18. 赋值运算符继承
- 19. 默认赋值运算符
- 20. PHP中的引用赋值运算符,=&
- 21. 赋值运算符Python中的变量?
- 22. if语句中的赋值运算符
- 23. 除了赋值运算符,C++中的哪些运算符不会被继承?
- 24. 逗号运算符和赋值运算符 - 返回值
- 25. 并行赋值运算符在Ruby中
- 26. 使用赋值运算符的的unique_ptr
- 27. 用C API替代Lua中的赋值运算符
- 28. 模板类中的C++赋值运算符实现
- 29. 函数参数C++中的赋值运算符
- 30. 处理复制赋值运算符中的异常(C++)
嗯不是你的问题包含答案?赋值运算符返回赋值(对于内置类型,对于用户定义的类型,它返回用户定义的...) – Hcorg