令 copy assignment操作符调用copy构造函数是不合理的,因为这就像试图构造一个已经存在的对象。这件事如此荒涔,乃至于根本没有相关语法。是有一些看似如你所愿的语法,但其实不是;也的确有些语法背后真正做了它,但它们在某些情况下会造成你的对象败坏,所以我不打算将那些语法呈现给你看。单纯地接受这个叙述吧:你不该令copy assignment 操作符调用copy构造函数。
反方向一
令 copy构造两数调用 copy assignment操作符
一同样无意义。构造
两数用来初始化新对象,而assignment 操作符只施行于已初始化对象身上。对一个尚末构造好的对象賦值,就像在一个尚末初始化的对象身上做“只对已初始化对象才有意义”的事一样。无聊嘛!别尝试。
如果你发现你的 copy构造函数和 copy assignment操作符有相近的代码,消除重复代码的做法是,建立一个新的成员函数给两者调用。这样的函数往往是 private 而且常被命名为 init。这个策略可以安全消除copy 构造函数和 copy assignment操作符之间的代码重复。