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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

more effective C++

發布時間:2024/1/17 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 more effective C++ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.不要對數組使用多態

??? 數組空間連續,靠偏移訪問,多態轉換后因為其類型變化,類型所占空間變化。此時偏移訪問的方式便不能正確去得數組各元素準確其實位置。

2.避免無用的缺省構造函數(主針對模板)

??? 通過仔細設計模板可以杜絕對缺省構造函數的需求。例如標準的vector模板(生成一個類似于可擴展數組的類)對它的類型參數沒有必須有缺省構造函數的要求。很多模板類沒有以仔細的態度去設計,沒有缺省構造函數的類就不能與許多模板兼容。

??? 無用缺省構造函數會在沒有足夠的數據時初始化一個對象,而此時該對象中許多屬性處于無效狀態。倘若我們不判斷這些無效狀態,則代碼很有可能運行不正常;倘若判斷無效狀態,則會影響運行的效率,這種對象的使用者也要為此付出更多時間和代碼。
??? 而使用沒有缺省構造函數的類的確有一些限制,但它給你提供了一種保證:這個類被正確地建立和高效地實現。

??? 避免方法是直接分配空間,而后在該空間以如下方式調用拷貝構造函數和析構函數。這樣子只提出了要求模板參數類有拷貝構造即可
??? ::new(__p) _Tp(__val)
??? __p->~_Tp()

3.智能指針

template<class T>??????????????????? // 模板類,指向T的
class SmartPtr {???????????????????? // 靈巧指針
public:
? SmartPtr(T* realPtr = 0);
? T* operator->() const;
? T& operator*() const;
? template<class newType>???????????? // 模板成員函數
? operator SmartPtr<newType>()??????? // 為了實現隱式類型轉換. 執行類似:
? {
??? return SmartPtr<newType>(pointee);
? }
? ...
};

實現模板類的不同類型實例間的隱式轉換。需要用到成員函數模板,即成員函數擁有一個未知類型模板參數。
SmartPtr<childclass> c;
SmartPtr<parentclass> p = c;

總結

以上是生活随笔為你收集整理的more effective C++的全部內容,希望文章能夠幫你解決所遇到的問題。

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