1.语言的类型安全(type-safe):
防止引用非初始化变量、数组下标越界,以及执行未检查的类型转换等情形的发生。其实类型安全不仅仅如此它还包括很多方面如指针的指向,类型的转换 ,精度的丢失 ,异常的保护等
2.template-based class (基于模版的类)
是指类是基于模版开发的,在VC中常见的template-based class 有
简单型:CArray、CList和CMap 他们都派生自CObject;具备了文件读写,RTTI(运行时类型识别)、动态创建等特性。
类型指针型:CTypedPtrArray、CTypedPtrList和CTypedPtrMap 这些类要求你在参数中制定基类,而且基类必须是MFC中的non-template pointer collections(非模版指针集合类)例如CObList或CPtrArray,你的新类将集成基类所有性质。
基于模版的类在使用中是这个样子例如:
CArray<TYPE,ARG_TYPE> 其中TYPE是指你希望存储的对象的类型,ARG_TYPE用来指定函数的参数类型,
例如存储一个int数组,数组成员函数的参数是int:
CArray<int,int> m_intArray;
m_intArray.Add(100);//成员函数的参数为int;
要一个由CPoint组成的数组数组成员函数的参数为CPoint;
CArray<CPoint,CPoint> m_pointArray;
CPoint point(12,12);
m_pointArray.Add(point);//成员函数的参数为CPoint;
当然我举的例子中成员函数都是用的Add其实CArray还有很多成员函数,他们的参数也是和你所指定的参数一样。
类型指针型的模版类使用方法:
CTypedPtrArray<BASE_CLASS,TYPE> BASE_CLASS用来指定CTypedPtrArray的基类(一般来说都是相对应的,如CTypedPtrArray的基类是CPtrArray或CObArray等,而CTypedPtrList的基类是CObList或CPtrList等)。TYPE则是用来指定你希望存储的对象的类型。举例:
CTypedPtrList<CObList,int*> m_intList;
int i=10;
int* x=&i;
m_intList.AddTail(x);
而non-template pointer collections(非模版指针集合类)的声明就和我们使用内部类型是一样的如:
CObList m_obList;
这些也是我网上搜集综合出来的,如果有不对的地方请高手指出我好改正。