例如,它让我感到困惑:
struct A {
// some fileds...
char buf[SIZE];
};
A a;
a = a;
通过 A 的 field 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.
如果使用memcpy
,可能会出现一些未定义的行为。
那么,C++ 对象中默认的赋值操作行为是什么?