C++数组成员如何在复制控制函数中处理?

这是我想了很久的事情。以以下为例:

结构矩阵
{
浮动数据[16];
};

我知道默认构造函数和析构函数在这个特定示例中做了什么(什么都不知道),但是复制构造函数和复制赋值操作符呢

结构矩阵
{
浮动数据[16];
//自动生成的复制构造函数
矩阵(constmatrix&that)://这里发生了什么?
{
//(还是在这里?)
}
//自动生成的复制分配运算符
矩阵和运算符=(常数矩阵和运算符)
{
//这里发生了什么?
归还*这个;
}
};

它是否涉及std::copystd::uninitialized\u copymemcpymemmove或什么

这是标准在12.8(复制类对象)中所说的。复制构造:

以适合其类型的方式复制每个子对象:

  • 如果子对象是类类型,则使用该类的复制构造函数
  • 如果子对象是数组,则以适合元素类型的方式复制每个元素
  • 如果子对象是标量类型,则使用内置赋值运算符

副本分配:

每个子对象都以适合其类型的方式指定:

  • 如果子对象是类类型,则使用该类的复制赋值运算符(如同通过显式限定;即忽略更多派生类中任何可能的虚拟重写函数)
  • 如果子对象是数组,则以适合元素类型的方式指定每个元素
  • 如果子对象是标量类型,则使用内置赋值运算符

发表评论