class HomeForSale { ... }; 每一個不動產代理商都會很快指出,每一件財產都是獨特的——沒有兩件是完全一樣的。在這種情況下,為 HomeForSale 對象做一個拷貝的想法就令人不解了。你怎么能拷貝一個獨一無二的東西呢?最好讓這種類似企圖拷貝 HomeForSale 對象的行為不能通過編譯:
HomeForSale h1; HomeForSale h2; HomeForSale h3(h1); // attempt to copy h1 - should // not compile! h1 = h2; // attempt to copy h2 - should // not compile!
唉,防止這種編譯的方法并非那么簡單易懂。通常,假如你不希望一個 class 支持某種功能,你可以簡單地不聲明賦予它這種功能的函數。這個策略對于拷貝賦值運算符不起作用,因為,就象 Item 5 中指出的,假如你不聲明它們,而有人又想調用它們,編譯器就會隱式地聲明它們。