c++
標準庫
標準庫並不是用物件導向的概念設計出來的
物件導向的概念關鍵點:
-
class
與class
的繼承關係 -
虛擬函式 -> 抽象
class
或者介面
物件導向庫複雜的點在於繼承關係很複雜
OOP(Object-Oriented programming)
關鍵概念:
-
class
的資料放在類裡面 -
運算元據的函式也放在類裡面
GP(Generic Programming)
泛型程式設計的關鍵概念:
-
將資料和運算元據的方法分開來
示例程式碼:
template<typename T, class Alloc = T>
class vector
{
};
template<typename _RandomAccessIterator>
inline void sort(_RandomAccessIterator _first, _RandomAccessIterator _last) {
}
分析:
-
sort
方法並沒有宣告在vector
類當中 -
呼叫
sort
方法取到vector
的資料透過iterator
迭代器 -
sort
演算法透過iterator
迭代器確定操作範圍,透過iterator
取用container
的元素
關鍵字inline
作用:
-
將方法宣告成
inline
那麼在呼叫到該方法的地方會直接將方法體的內容寫到呼叫處 -
不需要去
call
儲存方法的記憶體地址在進入方法進行呼叫
沒有inline
-
函式呼叫模型就是在方法呼叫處找到函式地址然後再呼叫函式,呼叫完成回到方法執行處繼續往下執行
GP
程式設計當中一個形象的例子:
-
由於資料和處理資料的演算法分開.透過迭代器去聯絡在一起
-
那麼例如比較大小的行為,就需要資料去定義如何比較
例如比較兩個類的大小:
示例程式碼:
可以看到具體的比較大小的行為:
-
有一套預設的方法去比較
-