作者amamoimi (佛仔)
看板Programming
标题[请益] 左值右值与物件传回
时间Fri Nov 24 06:36:45 2023
#include <iostream>
using namespace std;
class A{};
A f (A x){
return x;
}
int main (){
A a;
f (a) = a;
return 0;
}
当我这样写的时候,程式是合法的
#include <iostream>
using namespace std;
class A{};
A f (A x){
return x;
}
int main (){
A a;
cout<<&f (a);
return 0;
}
但是这样写的时候变成不合法了。错误讯息是说不能对右值取址
但是,f(a)不是可以放在左边吗(例一)我的认知是,可以放在左边的就可以是左值不是吗
?xd
或者说,f(A1)本身可以放在左边也让我觉得很疑惑,因为他应该只是函数的传回值,如果
是一般的传回值的确应该是不能当左值(除了参照我想不到别的..)
有人可以帮我解惑吗 谢谢
p.s.c++关於记忆体的部分真的让我蛮苦手的...想请问有没有推荐的书呢,谢谢大家
----
Sent from
BePTT on my OPPO CPH1943
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.200.242.58 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1700779007.A.500.html
※ 编辑: amamoimi (1.200.242.58 台湾), 11/24/2023 06:56:17
1F:推 CoNsTaR: 你的举的例子 f(a) 是 xvalue,如果你的 174.112.3.102 11/24 12:23
2F:→ CoNsTaR: A 是 int,它就会变成 prvalue,f(a) = 174.112.3.102 11/24 12:23
3F:→ CoNsTaR: a 就会不合法 174.112.3.102 11/24 12:23
4F:→ amamoimi: 请问C大指的「如果A是int」是指f的回传 1.200.242.58 11/24 18:17
5F:→ amamoimi: 值如果不是A而是int吗 1.200.242.58 11/24 18:17
6F:→ amamoimi: 嗯嗯...我的理解只到左值右值,xvalue 1.200.242.58 11/24 20:42
7F:→ amamoimi: 查了几篇文章还是雾煞煞...想请问哪些 1.200.242.58 11/24 20:42
8F:→ amamoimi: 东西可以作为xvalue呢? 1.200.242.58 11/24 20:42