int c = 2;
int d = std::move(c);
std::cout << "c is: " << c << std::endl;
std::cout << "d is: " << d << std::endl;
this code output:
c) 2
d) 2
我认为,在将(c)移至(d)之后,c 将是空的,为什么它仍然有2个价值? 您能帮助我解释这一点吗? 谢谢。
int c = 2;
int d = std::move(c);
std::cout << "c is: " << c << std::endl;
std::cout << "d is: " << d << std::endl;
this code output:
c) 2
d) 2
我认为,在将(c)移至(d)之后,c 将是空的,为什么它仍然有2个价值? 您能帮助我解释这一点吗? 谢谢。
I thought that after move(c) to d, c will be empty,
你的期望被误导。
为什么它仍然有2个价值?
基本类型没有移动建筑商。 你只是提供了一份副本。 制版并不修改源物体。
就班级类型而言,假设搬迁施工者确切做些什么,具体来说,源物体留在何处是不安全的。 它不一定被保证为“豁免”。 See the documentation of the category for what it. 如果没有任何文件,或文件没有提供任何保证,那么你不能对来源物体的状况做任何事情。
https://en.cppvis.com/w/cpp/utility/move”rel=“nofollow noreferer”>std:move t! (与名称相反)。 这完全相当于一个静态-向r Value
的参考类型。
它只是为了提高价值,更具体地说是为了“x数值,而不是“pr Value。 而且,有点名的举动有时会混淆人。 然而,这种命名的意图不是混淆,而是使你的法典更加可读。
利用<条码>x价值的,我们可以触发右上载,因此,我们可以使用:swap。 在这种超载中,对另一物体拥有所有权(但需要的是吨)。
例如,联系名单的移动构造者可以把点码复制到名单的头部,并在争论中储存<代码>nullptr<>/code>,而不是分配和复制单个点。
为什么其价值仍然为2
参看std:move
抽取/移除资源的实际工作由超载履行,如move Constructionor和movesign/。 <代码>std:move 任务只是要完成,以便汇编者能够称呼正确的超载(例如,移动建筑商支持复印机),而资源的实际转移必须由软件开发商在各自超负荷上加以界定。 自此,诸如<代码>int等基本类型 没有任何移动构件,说明int c = st:move(a);
仅仅是a
到。
Try this:
#include <iostream>
#include <utility>
void hello(int& a)
{
std::cout << "LVALUE" << std::endl;
}
void hello(int&& a)
{
std::cout << "RVALUE" << std::endl;
}
int main(void)
{
int a = 8;
hello(a);
hello(std::move(a));
return 0;
}
第一,正如@eerorika提到的那样。 基本类型相当于复制。 这种行为的原因相当清楚。 为了节省计算资源,开发了兽医学,而且你通过清理不会进一步使用的立体变量的价值,显然节省了任何(但浪费了某些东西)。 离开这里是最好的。
第二,“消除”变量不一定是“排泄”或“清理”。 形式上说,它可在任何国家,但对于标准图书馆物体,有一些保障:(从 。
Unless otherwise specified, all standard library objects that have been moved from are placed in a valid but unspecified state. That is, only the functions without preconditions, such as the assignment operator, can be safely used on the object after it was moved from
因此,您可看到“滚动”<代码>std:vector含有随机值,完全正确。 从未假设过这样的“<代码>:代码>是(或不是)在你的节目中将出现未经界定的空洞行为(而且不会有硬性复制,使事情更糟!) 更一般而言,对于从中移出的物体的状况,不作任何假设(除非该状况对标准图书馆物体有效)。
I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...
I have been searching for sample code creating iterator for my own container, but I haven t really found a good example. I know this been asked before (Creating my own Iterators) but didn t see any ...
Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...
I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?
Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...
Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...
I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...
Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?