【发布时间】:2018-01-30 10:03:56
【问题描述】:
我正在通过他的创作者的书学习 c++,我知道 rValue 基本上是不能通过它的地址定义的,你想移动它而不是复制。
在本书的后面,Stroustrup 会给出一个 Points struct
的例子struct Point{
int x,y;
}
struct Points{
vector<Point> elem;
Points(Point p0){elem.push_back(p0)};
...
}
Point x2{ {100,200} }
所以我的问题基本上是为什么在构造函数中它不使用 rValue 来移动发送的值?
也许像:
struct Points{
vector<Point> elem;
Points(Point&& p0){elem.push_back(p0)};
...
}
这样做是否更合适/不太清楚?
问候
【问题讨论】:
-
我们通常拼写为“rvalue”,全小写。
-
能够传递左值
Point对我来说似乎是合理的。 -
请注意,第二个示例中的
p0是一个左值,这意味着elem.push_back(p0)会复制它。如果这本书有任何好处,它会解释这一点。 -
您对右值的定义有缺陷。 I'm so sorry。规则有点复杂。
-
值得注意的是,
Point是一个非常简单的类型,仅由基本成员组成,没关系。
标签: c++ struct rvalue-reference