Tag: 拷贝构造函数

在复制控制函数中如何处理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或什么?

为什么复制赋值操作符必须返回一个引用/常量引用?

在C ++中,从复制赋值运算符返回引用的概念对我来说是不清楚的。 为什么复制赋值操作符不能返回新对象的副本? 另外,如果我有A类,并且有以下内容: A a1(param); A a2 = a1; A a3; a3 = a2; //<— this is the problematic line 运营商=定义如下: AA::operator =(const A& a) { if (this == &a) { return *this; } param = a.param; return *this; }