我不明白C++中赋值构造函数和复制构造函数之间的区别。是这样的:
class A {
public:
A() {
cout << "A::A()" << endl;
}
};
// The copy constructor
A a = b;
// The assignment constructor
A c;
c = a;
// Is it right?
我想知道赋值构造函数和复制构造函数如何分配内存?
A 复制构造函数用于初始化一个之前未初始化的来自其他对象数据的对象。
A(const A& rhs) : data_(rhs.data_) {}
例如:
A aa;
A a = aa; //copy constructor
An 赋值运算符用于替换a的数据先前初始化的对象与其他对象的数据。
A& operator=(const A& rhs) {data_ = rhs.data_; return *this;}
例如:
A aa;
A a;
a = aa; // assignment operator
您可以用默认构造加赋值来替换复制构造,但这会降低效率。
(附带说明:我上面的实现正是编译器免费授予您的实现,因此手动实现它们没有多大意义。如果您有这两个之一,则很可能您正在手动管理某些资源。在这种情况下,每三法则 https://stackoverflow.com/questions/4172722/what-is-the-rule-of-three,您很可能还需要另一个加上析构函数。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)