20140407 泛型编程和模板 函数指针 类的静态函数 静态成员变量 静态联编 动态联编
1、泛型与模板的区别
泛型是个更广泛的概念,java,C#等其他语言也“实现”了泛型概念。
对于C++语言来说,使用了模板实现泛型。想想“C++模板”,“泛型”这种技术,这种概念,目的是更好地进行代码复用,更好地表达类型,类型表达的安全。 希望对您有些帮助。
2、函数的指针
编译时分配的函数入口地址,函数名就是入口地址;最常用的用途就是把函数指针作为参数传给其它函数;
#include<stdio.h> int jug(int x, int y) { if(x>=0) { return x; } else if(y==0) { return x; } else return x/y; } int sub(int x,int y) { return(x+y); } int minus(int x,int y) { return (x-y); } void test(int (*p)(int,int),int a,int b) { int Int1; Int1=(*p)(a,b); printf("a=%d,b=%d\n",a,b,Int1); } int main() { int a=1,b=2,c=3,d=4,e=-5; test(sub,a,b); test(minus,c,d); test(jug,e,b); return 0; }
3、静态模板类,类的静态函数
类的静态函数不属于类对象,只属于类本身。静态模板类
#include<iostream> using namespace std; template<class T> //建立一个静态类模板 class Operate { public: static T Add(T a,T b) {return a+b;} static T Mul(T a,T b) {return a*b;} static T Judge(T a, T b=1) { if(a>=0) {return a;} else {return a/b;} } }; int main() { int A,B,C,D,E,x,y,z; A=1,B=2,C=3,D=4,E=5; x=Operate<int>::Add(A,B); y=Operate<int>::Mul(C,D); z=Operate<int>::Judge(E,B); cout<<x<<'\n'<<y<<'\n'<<z<<endl; return 0; }
4、成员变量(面P107)
- 对象之间可以共享的类成员变量:静态类成员变量(必须赋初值)
- 私有静态类成员变量需要通过公有静态成员函数访问
- 构造函数的初始化列表的初始化变量顺序是根据成员变量的声明顺序来执行的
- const常量必须设置为static或者在构造函数中初始化
5、静态联编(编译时就确定)和动态联编(虚函数是基础)
http://bdxnote.blog.163.com/blog/static/8444235200911311348529/
http://www.cnblogs.com/xiaofengkang/archive/2011/10/21/2220678.html
p110
虚函数数是非静态的成员函数