C++ STL 体系结构与内核分析(三)面向对象编程和泛型编程

OOP VS GP

OOP: Object-oriented programming 面向对象的编程 ,例如C++中的类和对象

GP:Generic Programming 泛型编程 ,例如C++中的模板

list不能使用sort排序是因为他的迭代器不同,sort函数只有randomAccessIterator才能如此操作。

OOP将 datas 和methods联系在一起;GP将 datas 和methods分开;这么做都是对具体的抽象。OOP的关键是类,类实例化出对象;GP的泛型是相对于强类型程序语言而定义的,GP 编程本身不需要指定类型的datas,实例化时需要datas,更像是methods的抽象。

注释:method->算法->比较大小->Operator Overloading

操作符重载和template模版

模版三大类:类模版、函数模版和成员模版

将这个类的类型,先不写出来,用一个T来代替,再使用的时候编译器进行推导得到输入的类型。

指定的类型,泛化之外写特化(指定类型就叫特化如上图所示)。上图蓝色区域就是用法。

泛化可以接收任何类型,特化只能指定类型,如上图所示。

偏特化绑定固定类型,如上图所示,vector<bool,Alloc>,锁定bool类型。图左边个数便特化

泛化接收任意type,如果接收的是指针T*,传进来的是*,图右边是范围的偏特化。

发布了176 篇原创文章 · 获赞 21 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_27262727/article/details/105176981