日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Effective C++ --2 构造/析构/赋值运算

發布時間:2025/3/21 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective C++ --2 构造/析构/赋值运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一部分Effective C++ --1 讓自己習慣C++

?

5、 了解C++默認編寫并調用哪些函數

(1)???編譯器暗自為類創建默認構造函數、拷貝構造函數、拷貝賦值函數和析構函數。

(2)???拷貝構造函數中對于內置類型通過拷貝bits來進行初始化,非內置類型通過調用成員變量的拷貝構造函數來進行初始化。

(3)???對于內含指針成員的類編譯器不會生出賦值操作,必須自己定義拷貝賦值函數。

6、 若不想使用編譯器自動生成的函數,就該明確拒絕

(1)???編譯器暗自創建的函數都是public,如果要阻止拷貝賦值等,必須明確聲明為private,可以不予實現。

(2)???也可以使用不能進行賦值拷貝等操作的基類。

7、 為多態基類聲明virtual析構函數

(1)???為了防止派生類對象經由一個基類指針被刪除時,派生的部分沒有被釋放的問題,需要把基類的析構函數聲明為virtual,此時調用派生類的析構函數。

(2)???如果一個類帶有任何virtual函數,它就應該擁有一個virtual析構函數;不用作基類使用的類,不應該聲明virtual析構函數。

8、 別讓異常逃離析構函數

(1)???析構函數絕對不要吐出異常。如果一個被析構函數調用的函數可能拋出異常,析構函數應該捕捉任何異常,然后吞下或者結束程序。

(2)???如果客戶需要對某個操作函數運行期間拋出的異常做出反應,那么類應該提供一個普通函數(而非在析構函數中)執行該操作。

9、 絕不在構造和析構過程中調用virtual函數

(1)???在基類構造期間,virtual函數不再是virtual函數,不具有多態作用,只是調用基類的函數而已。

10、令operate= 返回一個referece to *this

(1)???為了實現連鎖賦值,賦值操作符必須返回一個reference指向操作符的左側實參。

11、在operator中處理“自我賦值”

1)防止自我賦值將值銷毀的問題,注意賦值的順序,也可以加一個“證同測試”來檢驗是否是自我賦值,這樣可以提高效率。

12、復制對象時勿忘其每一個成分

1)當為class添加一個成員變量時,別忘了同時修改copying函數。

2copying函數應確保復制對象內所有的local成員變量,調用所有的基類的適當copying函數。

3copy 構造函數和copy賦值函數不要相互調用,為了消除重復代碼可以另寫一個函數供兩者調用。

?

總結

以上是生活随笔為你收集整理的Effective C++ --2 构造/析构/赋值运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。