我不明白 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(const A& rhs) : data_(rhs.data_) {}
例如:
A aa;
A a = aa; //copy constructor
赋值运算符用于将先前初始化的对象的数据替换为其他对象的数据.
A& operator=(const A& rhs) {data_ = rhs.data_; return *this;}
例如:
A aa;
A a;
a = aa; // assignment operator
您可以通过默认构造加赋值来替换复制构造,但这会降低效率。
(附带说明:我上面的实现正是编译器免费授予您的实现,因此手动实现它们没有多大意义。如果您有这两者之一,很可能您正在手动管理一些资源。在这种情况下,根据 The Rule of Three ,您很可能还需要另一个加上一个析构函数。)
关于c++ - 赋值运算符和复制构造函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11706040/