- 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++“| =”赋值运算符
- 2. c赋值运算符=
- 3. 在C++中重载赋值运算符
- 4. 字符串赋值运算符C++
- 5. C++ 11字符串赋值运算符
- 6. java复合赋值运算符和赋值运算符
- 7. 移动赋值运算符VS拷贝赋值运算符
- 8. 运算符超载赋值运算符
- 9. BigDecimal的赋值运算符
- 10. 赋值运算符 - 自赋值
- 11. C++赋值运算符关联
- 12. C++赋值运算符动态数组
- 13. 移动赋值运算符C++
- 14. C++左手赋值运算符
- 15. C++重载赋值运算符
- 16. C++赋值运算符重载
- 17. 按位赋值运算符在C#
- 18. C#引用赋值运算符?
- 19. 重载赋值运算符C++
- 20. 创建用C类赋值(=)运算符++
- 21. C++赋值运算符默认返回
- 22. 重载C++赋值运算符
- 23. C++赋值运算解决
- 24. 重载赋值运算符
- 25. 使用赋值运算符
- 26. 赋值运算符在
- 27. 嫩枝赋值运算符
- 28. 重载赋值运算符
- 29. 布尔赋值运算符
- 30. 默认赋值运算符
嗯不是你的问题包含答案?赋值运算符返回赋值(对于内置类型,对于用户定义的类型,它返回用户定义的...) – Hcorg