标签:
1.纯虚函数
virtal void function() = 0;
不能实例化, 因为此函数没有实体, 用于派生有实体的类
所以不能实例化含有纯虚函数的class
2.静态多态
3.模板(动态多态) 泛型编程
函数模板
template<typename T>
T maximun(T n1, T n2)
{
if(n1 > n2)
return n1;
return n2;
}
void main()
{
int a1 = 12, a2 = 22;
cout << maximun(a1, a2) << endl;
}
若类型不同
template<typename T1, typename T2, ......>
模板不会造成程序运行变慢, 生成的执行代码(obj)长度并不会比不用木板短
模板不会出现在执行代码中<编译器>
如果模板放在头文件中,可以增加程序的可移植性
补充一个冒泡排序(为什么之前我写的冒泡小飞兔说是选择排序.....)
template<typtname T>
void bubble_sort(T arr[], int n)
{
for(int i = 0; i < n - 1; j++)
for(int r = 0; r < n - 1 - i; r++)
if(arr[i] > arr[r]) swap(arr[i], arr[r]);
}
#if!defined ..
#define ..
类模板
引例:栈(stack) FILO(first in last out) 先进后出
栈操作:
pop 出栈
push 入栈
top 访问栈顶元素
实现:
#if!defined STACK_T_H #define STACK_T_H template <typename T> class stack { public: stack(int n = 10); ~stack(); bool pop(T & data_item); bool push(const T& data_item); inline int_number_stacked() const; inline int_stack_size() const; private: int max_size; int top; T* data; };
模板类的函数实现:
template <typename T>
stack<T>::stack(int n)
{
}
template <typename T>
bool stack<T>::push(const T& date_item)
{
}
模板类实例化:
stack <int> v_name;
手动给类型参数
stl 中一些模板
map, queue, list, pair, stack, set(这个不确定, 想不起来了)
标签:
原文地址:http://www.cnblogs.com/QQ-1615160629/p/5586560.html