面向对象编程和`GP`泛型编程
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编程当中一个形象的例子:
-
由于数据和处理数据的算法分开.通过迭代器去联系在一起
-
那么例如比较大小的行为,就需要数据去定义如何比较
例如比较两个类的大小:
示例代码:
可以看到具体的比较大小的行为:
-
有一套默认的方法去比较
-
It's a lonely road!!!

浙公网安备 33010602011771号