More Effective C++ 條款35 讓本身習慣於標準C++ 語言

(因爲本書出版於1996年,所以當時的新特性如今來講可能已經習覺得常,但如今從新瞭解反而會起到了解C++變遷的做用)html

1. 1990年後C++的重要改變算法

    1). 增長了新的語言特性:RTTI,namespaces,bool,關鍵詞mutable和explicit,enums做爲重載函數之自變量所引起的類型晉升轉換,以及"在class 定義區內直接爲整數型(intergral) const static class members設定初值"的能力.數組

    2). 擴充了Templates的特性:容許member templates存在,接納"明白只是template當場實例化"的標準語法,容許function templates接受"非類型自變量(non-type atguments)",可用class templates做爲其餘template的自變量.ide

    3). 強化了異常處理機制(Exception handling):編譯期間更嚴密地檢驗exception specifications,容許unexcpted函數拋出bad_exception對象.函數

    4).修改了內存分配例程:假如operator new[]和operator delete[],內存未能分配成功時由operator new/new[]拋出一個異常,提供一個operator new/new[]新版本,在內存分配失敗後返回0.spa

    5). 增長了新的轉型形式:static_cast,dynamic_cast,const_cast和reinterpret_castcode

2. 標準程序庫的能力htm

    1). 支持C標準函數庫.對象

    2). 支持strings.blog

    3). 支持國別(本土化,localization).不一樣文化使用不一樣字符集以及不一樣的日期,時間,排序事物,貨幣值等顯式習俗.

    4). 支持I/O.

    5). 支持數值應用.支持複數和數組類,提供經常使用函數,包括"部分和(partial sum)"以及"相鄰差值(adjacent difference)".

3. 標準庫特色

    1). 高度模板化——每同樣東西幾乎都是template.例如string是basic_string<char>的typedef(basic_string還可支持wide char,unicode char),IOstreams也是template,它有個類型參數(type parameter)用來定義streams(數據流)的字符類型.

    2). 全部成分都位於namespace std內.

4. Standart Template Library(STL)

    1). STL佔據了C++標準庫的大部分,主要包括三部分:容器(container),迭代器(iterator),泛型算法(algorithm).其中容器持有對象,迭代器用於遍歷容器元素,泛型算法則基於迭代器實現不依賴於具體類型的函數模板.

    2). STL是可擴充的,只要遵循STL的標準,能夠將本身的容器,迭代器,算法等結合STL使用.(要使自定義的迭代器適用於STL的泛型算法,須要瞭解C++的traits技法,見Effective C++ 條款47)

相關文章
相關標籤/搜索