關(guān)于C++的拷貝構(gòu)造函數(shù),很多的建議是直接禁用。為什么大家會這么建議呢?沒有拷貝構(gòu) 造函數(shù)會有什么限制呢?如何禁用拷貝構(gòu)造呢?這篇文章對這些問題做一個(gè)簡單的總結(jié)。
這里討論的問題以拷貝構(gòu)造函數(shù)為例子,但是通常賦值操作符是通過拷貝構(gòu)造函數(shù)來實(shí)現(xiàn) 的( copy-and-swap 技術(shù),詳見《Exceptional C++》一書),所以這里討論也適用于賦 值操作符,通常來說禁用拷貝構(gòu)造函數(shù)的同時(shí)也會禁用賦值操作符。
為什么禁用拷貝構(gòu)造函數(shù)
關(guān)于拷貝構(gòu)造函數(shù)的禁用原因,我目前了解的主要是兩個(gè)原因。第一是淺拷貝問題,第二 個(gè)則是基類拷貝問題。文章來源:http://www.zghlxwxcb.cn/news/detail-791097.html
淺拷貝問題
編譯器默認(rèn)生成的構(gòu)造函數(shù),是memberwise
拷貝^1,也就是逐個(gè)拷貝成員變量,對于 下面這個(gè)類的定義文章來源地址http://www.zghlxwxcb.cn/news/detail-791097.html
到了這里,關(guān)于為什么很多人禁用拷貝(復(fù)制)構(gòu)造函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!