![]() |
1
3
Eddi1: 我想我第一次没听懂这个问题。 标准规定: 3.10左值和右值
该标准在本段中没有说明任何内容,只是用户定义的类型和基元类型是相同的。如果函数的返回不是引用,则它不是L值。然而,在同一页上有一篇有趣的评论:
所以基本上在你的例子中:
amethod返回一个用户定义的类型,在该类型上函数:
被处决。不过,它不是L值。事实上,C++中可以有空语句,或者只有R值的语句!:
编辑2: 举个例子:
表达
显然,上面的线路是用C++标准错了,但是VC只是允许它!
因为你是这么要求的。首先,一个新的例子
这与重载二进制运算符的情况相同。例如,如果
如果你这样做,你可能会有如下无意义的陈述:
其中表达式
|
![]() |
2
2
但是,不能调用rof值的操作。 内置的 类型:
|
![]() |
3
0
表达
创建并返回类对象,以及表达式
创建第二个类对象并将其分配给第一个对象。 |
![]() |
4
0
我认为编译第一个版本是因为你的类有一个默认的构造函数、析构函数、复制构造函数和 赋值运算符 它称为amethod()=yourclass();。 int amethod(){返回a;} 紫外()=5; 此代码无法编译,因为没有rvalue。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 6 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |