C++ 课堂笔记

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(这个不确定, 想不起来了)

 

posted @ 2016-06-15 11:27  筱陌  阅读(286)  评论(3编辑  收藏  举报