《Effective C++》讀書筆記

《Effective C++》 讀書筆記 第一部分第一條:視C++為一個語言聯邦

日期:2020/02/20

《Effective C++》讀書筆記


C++的難學之處在於它的四種不同的編程範型(programming paradigms):

1、基於過程的編程(procedural-based) -- 兼容C語言

2、基於對象的編程(oject-based) -- 類

3、面向對象的編程(object-oriented) --對象+類+繼承+多態+消息

4、泛型的編程(generics) -- 模板

Q:什麼是OOP的基本思想?

A:把組件的實現和接口分開,並且讓組件具有多態性。區別面向對象的開發和傳統過程的開發的要素有:對象識別和抽象、封裝、多態性和繼承。

第一部分:讓自己習慣C++

1、聲明(declaration):告訴編譯器某個東西的名稱和類型

2、定義(definition):提供編譯器一些聲明所遺漏的細節

a、對對象而言,定義是編譯器為此對象撥發內存的地點;

b、對函數(function)或函數模板(function template)而言,定義是提供代碼本體;

c、對類(class)和類模板(class template)而言,定義是列出他們的成員

3、初始化(initialization):給予對象初值的過程

構造函數被聲明為explicit,防止編譯器執行隱式類型轉換(implicit type conversions),但是仍可以進行顯示類型轉化(explicit type conversions)。

** C++會出現不明確行為(undefined behavior),不明確行為將無法穩定預估運行期會發生什麼事!!!

條款1:視C++為一個語言聯邦

為了理解C++,需要主要了解四種次語言:

1、C語言,C++是以C為基礎。區塊(Blocks)、語句(statements)、預處理器(preprocessor)、內置數據類型(built-in data types)、數組(arrays)、指針(pointers)、、、統統來自C語言。

2、面向對象的C++(object-oriented C++)。主要是C with Classes的訴求:classes(包括構造函數和析構函數),封裝(encapsulation),繼承(inheritance),多態(polymorphism),virtual函數(動態綁定)…,這一部分是面向對象古典的規則。

3、C++模板(Template C++)。泛型編程,這裡有一種嶄新的編程泛型---

模板元編程(template meta programming

4、STL標準模板程序庫。它對容器(containers)、迭代器(iterators)、算法(algorithms)以及函數對象(function objects)的規約有極佳的緊密配合和協調。

這四種此語言的有效結合,使C++程序靈活,高效!

《Effective C++》讀書筆記


分享到:


相關文章: