算法部署——函数和类
泛型编程
定义:
泛型编程就是使用template(模板)为主要工具来及逆行编写程序。C++标准库中有大量的模板编程,最大特点就是将数据与算法分离,算法不需要依赖数据类型;
(GP编程称为泛型编程,OOP编程称为面向对象编程)
模板(templates)
定义:模板就是实现代码重用机制的一种工具,可以实现类型参数化,即把类型定义为参数,从而实现真正的代码可重用性;模板分为两类:函数模板和类模板;
- 类模板是指我们定义的类,模板类是指对象,指的是我们实例化以后的对象;
- 声明一个模板关键字class不能省略;
- 声明一个模板,模板参数可以是一个也可以是多个;
模板函数:
template <typename T>
T _max(T t1, T t2){
if (t1 > t2) return t1;
else return t2;
}
模板类:
template<typename T1, typename T2>
class utils{
private: T1 a; T2 b;
pubilc:
utils(T1, T2);
coid u_swap(T1 &c, T2 &d);
};
类
1、结构图
2、成员变量
pubilc:一个类的public成员变量、成员函数,可以通过类的成员函数、类的实例变量进行访问;
private:私有成员变量或函数在类的外部是不可访问的,甚至不可查看,只有类和友元函数可以访问私有成员;
protected:无法通过类的实例变量进行访问,但是可以通过类的友元函数、友元类进行访问;(和private访问权限一致,但protected只能在派生类中访问,private只能在友元中访问)
3、构造函数
定义:构造函数是一个特殊的成员函数,在每个类创建的时候都会被隐式创建,名称与类名完全一致,不会返回任何数据类型(void也不行),构造函数通常用来初始化一些成员变量;
explict关键字:用来构造一个有参构造函数,并且不及逆行隐式的构造;
4、singleton(单例模式)的构造函数:
特点:
构造函数私有;保证一个类只创建一个实例;需要提供该实例的全局访问点;高效;
5、析构函数
定义:是类的一种特殊的成员函数,它在每次删除所创建对象时执行,不会返回任何值,也不带参数。一般用来释放资源;
6、类与类之间的关系
继承(Inheritance):A是B的子类;
复合(Composition):A has B,B has C;
委托(Delegation):A中有B的指针;
7、特殊类
结构体:一种特殊的类,一般来说里面没有任何操作,只有数据的存放相关操作;
struct 结构名
{
类型 变量名;
类型 变量名;
...
} 结构变量;
? class中默认的成员访问权限是private,而struct中是pubilc;
枚举类:C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合;
enum color
{
RED,
BLUE,
Black
};
? 默认是从0开始的整形,主要作用是在某些变量使用时比较方便参考;
|