一、抽象性、封装性
二、继承性
三、多态性
四、C语言基础
五、泛型程序设计
5.1模板
1.一个模板是创建一个类或函数的通用模型,将队形的数据类型参数化。
2.将程序设计重点放在算法是算法,使得“算法”和“数据类型”分开,实现一段程序 可以处理多种不同类型的对象。
5.1.2函数模板
template <typename Ttype1,typename Ttype2>
返回类型 函数名(参数列表)
{ 函数定义体;}
1.< >内参数为模板形参
例1:
函数模板
template <typename T>
T abs(T& a)
{
return a < 0 ? -a : a;
}
参数的替代:
编译器根据实际的参数确定模板参数T 的类型
void main(0)
{
int i = 3;
float f = 2.5;
i = abs(i); cout << "i=" << i << endl;
f = abs(f); cout << "f=" << f << endl;
}
2.模板是将数据类型参数化的工具,提供了一种代码与数据类型脱离的机制。
3.函数模板执行过程中,两次编译:
第一次实例化之前,编译器检查模板代码本身的语法是否正确;
第二次实例化时,检查模板代码,查看调用都有效,如果发现实例化类型不支持某写函数调用, 则会报错。
5.1.2类模板
1.类模板指申明一个类时,将某些数据类型参数化,包括函数成员类型、成员函数参数类型或返回值类型。
2.一个可以处理多种数据类型的通用类。
3.创建对象实例时,将通用类实例化,成为通用类的一个副本,具有指定的类型。
template <typename Ttype1,typename Ttype2>
class ClassName
{ 类定义体;}
4.<>内为模板形参表
5.定义类模板,模板形参的类型必须在类名后面< >中指出:
可以用如下语句创建类的实例:
ClassName <typename> 对象1,对象2,......,对象n
6.在类模板外部定义类的成员函数:
template <typename Ttype>
返回类型 ClassName <Ttype>::函数名(参数列表)
{ 函数体; }
例2:
#include<iostream>
using namespace std;
struct stuScore
{
int id, score;
};
template <typename T >//定义模板类
class CBuffer
{
private:
T a;
int empty;
public:
CBuffer();
T get();
void push(T x);
};
template <typename T>
CBuffer <T>::CBuffer() :empty(0) {}//对T参数化处理过程
template <typename T>
T CBuffer <T>::get()
{
if (empty = 0) { cout << "the buffer is empty!" << endl; }
return a;
}
template <typename T>
void CBuffer<T>::push(T x)
{
empty++; a = x;
}
void main()
{
stuScore stu = { 55,2001 };
CBuffer<int> i1, i2;//int创建类实例
CBuffer<stuScore> stu1;//结构体stuScore创建类实例
CBuffer <double> d;//double创建类实例
i1.push(100); i2.push(-100);
d.push(78);
cout << i1.get() << " " << i2.get() << endl;
stu1.push(stu);
cout << "the student's id is" << stu1.get().id << endl;
cout << "the student's score is " << stu1.get().score << endl;
cout << d.get() << endl;
}
六、Windows编程基础
6.1Windows程序的特点
1.用户界面统一、友好;
2.支持多任务,多窗口;
3.独立于设备的图形操作
-图形设备借口(GDI ,Graphics Device Interface),提供与设备无关的图形输出能力;
4.队列化信息输入;
5.事件驱动的程序设计,允许用户用各种合理的顺序来安排程序的流场;
-当按下键、移动鼠标或单击鼠标按钮时,计算机通知Windows系统发生一个事件,和事件的种类、发生时间、发生位置(如坐标值)
6.资源共享,应用程序共享系统提供的资源;
7.程序和资源分开:菜单、对话框、位图等可视化对象呗单独分离出来
8.支持应用程序间的数据交换;