隐式复制构造函数/赋值运算符的行为

2023-12-13

我有一个关于 C++ 标准的问题。

假设您有一个带有用户定义的复制构造函数和赋值运算符的基类。派生类使用编译器生成的隐式类。

派生类的复制/赋值是否调用用户定义的复制构造函数/赋值运算符?或者您是否需要实现调用基类的用户定义版本?

感谢您的帮助。


如果派生类没有声明复制构造函数,则将声明隐式复制构造函数(12.8/4“复制类对象”) - 即使基类具有用户定义和定义的复制构造函数。如果在这种情况下基类具有用户定义的复制构造函数,则使用该用户定义的复制构造函数复制该基类子对象 (12.8/8)。

复制赋值运算符也类似(12.8/10 和 12.8.13)。

因此,如果派生类不需要用户定义的复制构造函数或复制赋值运算符来“它自己的东西”,则不一定需要实现调用基类的用户定义版本。但是,如果派生类确实声明并定义了自己的复制构造函数/复制赋值运算符,那么就基类子对象而言,这些用户定义的实现负责做正确的事情 - 不再由编译器自动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐式复制构造函数/赋值运算符的行为 的相关文章

随机推荐