原创 STL源碼剖析筆記 —— 第七章

任何應用程序想要使用STL內建的仿函數,都必須含入< functional >頭文件 爲了方便起見,< stl_function.h>定義了兩個class,分別代表一元仿函數和二元仿函數,任何仿函數,只要依個人需求選擇繼承其中一

原创 STL源碼剖析筆記 —— 第六章

將無效的迭代器傳給某個算法,雖然是一種錯誤,卻不能保證能夠在編譯時期就被捕獲出來,因爲所謂“迭代器類型”並不是真實的型別,它們只是function template的一種性別參數 對於所有的數值(numeric)算法,包括adj

原创 深度探索C++對象模型筆記 —— 第一章

C++在佈局以及存取時間上主要的額外負擔是由virtual引起的,包括虛函數和虛繼承 多態是通過指針或引用來完成的Librarary_meterials thing1; class Book:public Librarary_

原创 Effective C++筆記 —— 第六章

public繼承是is-a的關係 derived class作用域被嵌套在base class作用域內 不重新定義繼承而來的缺省參數值,virtual函數動態綁定,而缺省參數值卻是靜態綁定 避免遮掩繼承而來的名稱,即使base

原创 Effective C++筆記 —— 第四章

讓接口容易被正確使用,不容易被誤用 設計一個新的class要考慮的問題: 2.1 新type如何被創建和銷燬——構造函數和析構函數以及內存分配函數和釋放函數 2.2 對象的初始化和賦值該有什麼樣的差別——構造函數和賦值運算符 2

原创 Effective C++筆記 —— 第七章

以不同template參數具現化function templates會導致調用不同的函數,這便是所謂的編譯器多態;哪一個重載函數被調用也是發生在編譯期 如果template內出現的名稱如果相依於某個template參數,稱之爲從

原创 深度探索C++對象模型筆記 —— 第七章

Point< float >* ptr=0; 程序中什麼都沒發生,因爲一個指向class object的指針,本身並不是一個class object,編譯器不需要知道與該class有關的任何members的數據或object佈局

原创 編譯原理筆記——第一章

編譯器有兩個部分組成——分析部分和綜合部分 1.1 分析部分把源程序分解爲多個組成要素,並在這些要素上加上語法結構,然後,它使用這個結構來創建該源程序的一箇中間表示。分析部分會收集有關源程序的信息,並把信息存放在一個稱爲符號表的

原创 深度探索C++對象模型筆記 —— 第六章

C++程序中所有的global objects都被放置在程序的data segment,如果顯示指定給它一個值,此object將以該值爲初值,否則object所配置到的內存內容爲0 語言要求每次調用new都傳回一個獨一無二的指針

原创 Effective C++筆記 —— 第八章

當operator new拋出異常以反映一個未滿足的內存需求之前,它會先調用一個客戶指定的錯誤處理函數,一個所謂的set-new-handlernamespace std{ typedef void(*new_handler)

原创 STL源碼剖析筆記 —— 第八章

配接器:將一個class的接口轉換爲另一個class的接口,使原本因接口不兼容而不能合作的classes可以一起運作 改變仿函數接口者稱爲function adapter,改變容器接口者,稱爲container adapter改

原创 STL源碼剖析筆記 —— 第一、二章

C語言時代,欲將函數當做參數傳遞,唯有通過函數指針才能達成,但是函數指針有缺點,最重要的是它無法持有自己的狀態,也無法達到組件技術中的可適配性——也就是無法再將某些修飾條件加諸於其上而改變其狀態。C++可以採用仿函數形式 內存分

原创 深入理解計算機系統 —— 第一章

源程序實際上就是一個由0和1組成的位(又稱爲比特)序列,8個位被組織成一組,稱爲字節 系統中所有的信息 —— 包括磁盤文件、內存中的程序,內存中存放的用戶數據以及網絡上傳送的數據,都是由一串比特表示的。區分不同數據對象的唯一方法

原创 深入理解計算機系統 —— 第二章

由於表示的精度有限,浮點運算是不可結合的(即不能使用結合律) 對於一個字長爲w位的機器而言,虛擬地址的範圍爲0 ~ 2^w - 1,程序最多訪問2^w個字節 我們將程序稱爲“32位程序”或“64位程序”時,區別在於該程序是如何編

原创 有意義的命名 —— Clean Code

名副其實,如果名稱需要註釋來補充,那就不算是名副其實 避免誤導,避免用外形相似的單詞,更要避免用小寫字母l和大寫字母O 做有意義的分區,不能光是添加數據或是廢話。比如a1, a2, … , aN;或者廢話,比如Info和Data