关于C++中Lvalue-to-rvalue转换与比较运算符的技术咨询
C++左值转右值转换与比较运算符相关问题确认与提问
结论正确性确认
- 结论1:示例1中
operator==的两个操作数x和0在比较前均会执行左值转右值(Lvalue-to-rvalue)转换,因此示例2也能正常编译运行。 - 结论2:左值转右值转换永远不会作用于类类型(基于文档相关段落的理解)。
相关技术问题
- 你提到的
bool operator==(int &, Foo&)和bool operator(int, Bar)中,Foo和Bar是否均为类? - 内置运算符针对标量类型操作数时会执行左值转右值转换,原因是内置运算符均为传值调用,但表格中显示类外定义的运算符为引用传参,请问类外定义是否属于内置运算符?
- 若问题2答案为是,为何内置运算符会执行该转换;若为否,类外定义与内置运算符的区别是什么?
- 示例代码中重载
operator==的参数为传值,但未触发左值转右值转换,是否意味着类类型与重载运算符结合时,无论参数是否传值都不会执行该转换? bool operator==(int, Bar)中,是否仅int参数会执行左值转右值转换,Bar参数不会?
内容的提问来源于stack exchange,提问作者user17597436
相关产品推荐
相关产品推荐

