看板 C_and_CPP 關於我們 聯絡資訊
這是課文的內容(12是我自己加上) "1.如果copy constructor是private,用戶程式就不得拷貝該class的物件。 編譯器會抵制每一次拷貝企圖。 2. 然而friend和class本身成員仍可以進行拷貝動作。如果我們也想阻止二者 的拷貝動作,可宣告一個private copy constructor但不定義它。" 我如果已經宣告copy constructor為private, 要怎樣寫一個"成員函式"來拷貝? ex. class Foo { public: int x,y; private Foo(const Foo&); private Foo(Foo& ); public: ??????? }; 能夠幫我填空一下嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.91.138
purpose:public: Foo *create(Foo &src) { return new Foo(src); } 03/22 23:45
purpose:不定義複製建構也沒意義,它不會在 compile time 報錯 03/22 23:46
purpose:而且你自己規定不能用複製建構,又自己打破規定,只會被笑 03/22 23:47
ah7675:如果有地方用到就會報錯 像你用的這段應該就會 03/23 00:57
ah7675:通常會定一個CopyFrom的method 引數用指標或參考 手動把元 03/23 00:59
ah7675:素都複製過去 這是故意要以顯性方式呼叫 可能原因有兩個 03/23 01:00
ah7675:1.好追蹤除錯(coding style) 2.為了使用自定的記憶體管理架 03/23 01:02
ah7675:構(reference count+smart pointer) 03/23 01:03
ah7675:啊 報錯的時間是link的時候 怕誤會所以加註一下 03/23 01:05
purpose:您對,上面我是把不定義當成 private: Foo(Foo &src) { } 03/23 10:56
purpose:一時誤會,應該是整個函數不定義才對,所以會報錯 03/23 10:56