Nig*_*rry 5 c++ copy-constructor copy-assignment
我了解在什么情况下会调用哪个...
Sample a;
Sample b = a; //calls copy constructor
Sample c;
c = a; //calls assignment operator
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么这两种不同的东西都存在?为什么只有两者之一不能同时解决这两种情况?
不,他们不同。
复制构造函数用于构造一个新对象(从另一个对象)。在这种情况下,您只需要初始化成员即可。
赋值运算符用于现有对象(您可能已通过默认构造函数等构造了它),然后由另一个对象赋值。在这种情况下,您需要重新初始化成员,有时意味着销毁并再次初始化它们。
即使如此,它们的功能是如此相似,因此您通常可以共享它们的实现。如:什么是复制和交换惯用法?