vla*_*don 5 c++ rvalue-reference
第一个例子
int a = 0;
auto && b = ++a;
++a;
cout << a << b << endl;
Run Code Online (Sandbox Code Playgroud)
版画 22
第二个例子
int a = 0;
auto && b = a++;
++a;
cout << a << b << endl;
Run Code Online (Sandbox Code Playgroud)
版画 20
问题:
为什么在第++a3行的第一个例子中也增加b,为什么在第二个例子中没有这样的行为?
更新:出现了 新问题.
Vio*_*ffe 10
因为pre-increment(++a)首先递增值a,存储结果,然后返回引用a.现在a,b有效地指向同一个对象.
a++但是,post-increment()首先a以临时值为增量存储当前值a,并返回此临时值 - 您的rvalue ref指向该临时值.a并且b指向不同的对象,更具体地说 - b是暂时保持a递增之前的值.
这就是为什么它鼓励使用的原因++it超过it++了定义递增/递减迭代器和其他复杂的对象:后者将创建一个临时拷贝,因此可能会比较慢.