如何在复制控制函数中处理C ++数组成员?
这是我长久以来想知道的。 以下面的例子:
struct matrix
{
float data[16];
};
我知道默认构造函数和析构函数在这个具体例子中做了什么(没有),但是复制构造函数和复制赋值运算符呢?
struct matrix
{
float data[16];
// automatically generated copy constructor
matrix(const matrix& that) : // What happens here?
{
// (or here?)
}
// automatically generated copy assignment operator
matrix& operator=(const matrix& that)
{
// What happens here?
return *this;
}
};
它涉及std::copy
或std::uninitialized_copy
或memcpy
或memmove
或什么?
这是标准在12.8(复制类对象)中所说的。 复制建设:
每个子对象都以适合其类型的方式进行复制:
复制作业:
每个子对象都以适合其类型的方式进行分配:
上一篇: How are C++ array members handled in copy control functions?