类与结构体别名
https://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html
1.变量别名
char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针和一个字符变量
改写:
typedef char* PCHAR;PCHAR pa, pb; //两个字符指针变量
2. 结构体别名
typedef struct tagPOINT
{int x;int y;
}POINT;
POINT p1
3. 用typedef来定义与平台无关的类型
标准库就广泛使用了这个技巧
typedef double REAL
然后,REAL 可以用于替代double
4. 为复杂的声明定义一个新的简单的别名
typedef 与 #define的区别:
案例一:
通常讲,typedef要比#define要好,特别是在有指针的场合。请看例子:
typedef char *pStr1;
#define pStr2 char *;
pStr1 s1, s2;
pStr2 s3, s4;
在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们
所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一
个类型起新名字。
类模板与函数模板 (template )
template <class T> //函数模板
T min(T x,T y)
{ return(x<y)?x:y;}
template<class T> //类模板
class A{T g(T a,T b); A();}
案例:字典加载。
重载:(待有机会补充)