令 copy assignment操作符調用copy構造函數是不合理的,因為這就像試圖構造一個已經存在的對象。這件事如此荒涔,乃至于根本沒有相關語法。是有一些看似如你所愿的語法,但其實不是;也的確有些語法背后真正做了它,但它們在某些情況下會造成你的對象敗壞,所以我不打算將那些語法呈現給你看。單純地接受這個敘述吧:你不該令copy assignment 操作符調用copy構造函數。
反方向一
令 copy構造兩數調用 copy assignment操作符
一同樣無意義。構造
兩數用來初始化新對象,而assignment 操作符只施行于已初始化對象身上。對一個尚末構造好的對象賦值,就像在一個尚末初始化的對象身上做“只對已初始化對象才有意義”的事一樣。無聊嘛!別嘗試。
如果你發現你的 copy構造函數和 copy assignment操作符有相近的代碼,消除重復代碼的做法是,建立一個新的成員函數給兩者調用。這樣的函數往往是 private 而且常被命名為 init。這個策略可以安全消除copy 構造函數和 copy assignment操作符之間的代碼重復。