这个成语是什么,什么时候应该使用?它解决了哪些问题?当使用C++ 11时,成语是否会改变?
虽然在许多地方已经提到过,但我们没有任何单一的"它是什么"问题和答案,所以在这里.以下是前面提到的地方的部分列表:
c++ c++-faq copy-constructor assignment-operator copy-and-swap
比如,它让我困惑:
struct A {
// some fileds...
char buf[SIZE];
};
A a;
a = a;
Run Code Online (Sandbox Code Playgroud)
通过A的字段buf,看起来默认的赋值操作可能会调用类似于memcpy将对象X分配给Y的东西,所以如果将对象分配给自身并且没有定义明确的赋值操作,a = a;如上所述.
memcpy手册页:
DESCRIPTION
The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas must not overlap. Use memmove(3) if the memory areas do overlap.
Run Code Online (Sandbox Code Playgroud)
如果使用memcpy,可能会发生一些未定义的行为.
那么,C++对象中的默认赋值操作行为是什么?