在初始化列表中复制对象

Copying object inside the initialization list

本文关键字:复制 对象 列表 初始化      更新时间:2023-10-16

如何将Axes (Axes const &crAxes) { *this = crAxes; }更改为Axes (Axes const &crAxes) : (*this)(crAxes) {},以便在初始化列表中复制对象(在X, Y和Z初始化为默认值之前)

改变形式:

struct Axes
{
    Axes () : X(0.f), Y(0.f), Z(0.f) {}
    Axes (Axes const &crAxes) { *this = crAxes; }
    float   X;
    float   Y;
    float   Z;
};

变成这样:

struct Axes
{
    Axes () : X(0.f), Y(0.f), Z(0.f) {}
    Axes (Axes const &crAxes) : (*this)(crAxes) {}
    float   X;
    float   Y;
    float   Z;
};

在copy c-tor中不能这样做。使用简单的

Axes(const Axes& rhs) : X(rhs.X), Y(rhs.Y), Z(rhs.Z) {}

但是,这里不需要copy c-tor,因为默认实现的copy c-tor会做同样的事情(memberwise-copy)。