這是《Effective C++》中第6個(gè)原則虏杰,在某些情況下你不想讓某些類的對(duì)象被拷貝,那么在這種情況下即使你不寫copy構(gòu)造函數(shù)和copy賦值操作符編譯器也會(huì)為你生成腋腮,那么你不得不自己寫它們倆。
而你又不希望別人調(diào)用它們壤蚜,所以這時(shí)你要將它們聲明為private類型即寡。一旦你寫了,編譯器就不會(huì)自動(dòng)調(diào)用父類的copy構(gòu)造函數(shù)和copy賦值操作符袜刷。
即便這樣本類內(nèi)部成員函數(shù)和友元函數(shù)還是可以調(diào)用它們聪富,該如何是好?辦法就是你只聲明這些函數(shù)而不去實(shí)現(xiàn)著蟹,沒有實(shí)現(xiàn)就自然沒有功能了墩蔓,而既然實(shí)際上沒用梢莽,你甚至連形參都可以省略,只在形參列表中寫個(gè)形參類型即可奸披,就像下圖類的定義所示的這樣:
其中的幾個(gè)函數(shù)實(shí)現(xiàn)如下所示:
從上圖可見昏名,copy構(gòu)造函數(shù)和copy賦值操作符都沒有實(shí)現(xiàn)。在主程序中是如下調(diào)用的:
運(yùn)行結(jié)果如下所示:
出現(xiàn)了錯(cuò)誤提示阵面,說copy構(gòu)造函數(shù)無(wú)法解析轻局。
現(xiàn)在我把copy構(gòu)造函數(shù)和copy賦值操作符都注釋掉。
在運(yùn)行得如下結(jié)果:
而本思想只在闡述如果你不想讓編譯器為你自動(dòng)生成函數(shù)样刷,你就要自己手寫仑扑。