泛型(类属)程序设计 一一模板
泛型(类属)程序设计 --模板
主要内容 ■泛型(类属)的基本概念 ■函数模板 ■类模板 ■模板的复用问题 基于C++标准模板库(STL)的编程
主要内容 ◼ 泛型(类属)的基本概念 ◼ 函数模板 ◼ 类模板 ◼ 模板的复用问题 ◼ 基于C++标准模板库(STL)的编程
问题的提出 在程序设计中,经常需要用到一些功能完全相同的 程序实体,但它们所涉及的数据的类型不同。 ·例如,对不同元素类型的数组进行排序的函数: void int sort(int x[],int num); void double_sort(double x[],int num); void A_sort(A x[],int num); 这三个函数的实现是一样的(如都采用冒泡法)
问题的提出 ◼ 在程序设计中,经常需要用到一些功能完全相同的 程序实体,但它们所涉及的数据的类型不同。 ◼ 例如,对不同元素类型的数组进行排序的函数: void int_sort(int x[],int num); void double_sort(double x[],int num); void A_sort(A x[],int num); 这三个函数的实现是一样的(如都采用冒泡法)
再例如,元素类型不同的栈类 class IntStack class AStack { int buf[100]; { Abuf[100]; public: public: void push(int); void push(A); void pop(int&); void pop(A&); }i class DoubleStack { double buf[100]; public: void push(double); void pop(double&); } 这三个类的实现也是一样的(用数组表示元素)
class IntStack { int buf[100]; public: void push(int); void pop(int&); }; class DoubleStack { double buf[100]; public: void push(double); void pop(double&); }; class AStack { A buf[100]; public: void push(A); void pop(A&); }; ▪ 再例如,元素类型不同的栈类 这三个类的实现也是一样的(用数组表示元素)
对于前面的三个排序函数和三个栈类,如 果能分别只用一个函数和一个类来描述它 们,这将会大大简化程序设计的工作!
◼ 对于前面的三个排序函数和三个栈类,如 果能分别只用一个函数和一个类来描述它 们,这将会大大简化程序设计的工作!