模板编程入门
最近在阅读STL源码,源码里大量使用了模板编程,搞得好晕,在此梳理一下模板编程的基础用法
模板编程分为函数模板和类模板
函数模板
定义一个模板函数:
例如: 下面这段代码可以计算任意容器内的元素之和
类模板
类模板主要应用于容器类中,使得容器能够处理各种类型的对象
定义一个模板类:
例如:
成员函数的定义与之类似:
STL中的迭代器实现(smart pointer)
迭代器是一种行为类似指针的对象,指针的各种行为中最常见最重要的是内容提领(dereference)和成员访问(member access),因此,迭代器最重要的工作,就是对operator*和operator->进行重载(overloading)工作。关于这一点,C++标准程序库里有一个auto_ptr可供参考,这是一个用来包装原生指针(native pointer)的对象,可以有效解决内存泄露问题。
先说auto_ptr的用法:
auto_ptr的源码在头文件memory中,根据它可以简化成如下代码,可以具体说明auto_ptr的行为和能力
memory中的代码如下