1通用编程技术,其实STL就是一种通用编程技术。我们的面向对象编程注意的是编程的数据方面,而我们的通用编程技术注意的是算法方面。它们之间的共同点 是抽象和创建可以重用的代码。通用编程技术旨在写出独立于数据类型的代码。在C++中完成通用编程技术的工具是模版。
2
函数模板举例
template
T max(T a,T b)
{
return a-b;
}
类模板举例
template
class A
{
public:
A(T x,T y):X(x),Y(y){}
void getx();
private:
T X,Y;
};
template
void A
{return x;}
3
类模板
类模板,是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。
定义类模板的一般形式是:
template <类型名 参数名1,类型名 参数名2,…>
class 类名
{
类声明体
};
例如,template
class Smemory
{…
public:
void mput(T x);
…
}
表示定义一个名为Smemory的类模板,其中带类型参数T。
在类模板的外部定义类成员函数的一般形式是:
template <类型名 参数名1,类型名 参数名2,…>
函数返回值类型 类名<参数名 1 参数名 2,…>::成员函数名(形参表)
{
函数体
}
例如:template
void Smemory
{…}
表示定义一个类模板Smemory的成员函数,函数名为mput,形参x的类型是T,函数无返回值。
类模板是一个类家族的抽象,它只是对类的描述,编译程序不为类模板(包括成员函数定义)创建程序代码,但是通过对类模板的实例化可以生成一个具体的类以及该具体类的对象。
与函数模板不同的是:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定,
其实例化的一般形式是:
类名 <数据类型 1(或数据),数据类型 2(或数据)…> 对象名
例如,Smemory
表示将类模板Smemory的类型参数T全部替换成int 型,从而创建一个具体的类,并生成该具体类的一个对象mol。
貌似你这100分会打水飘。
这些问题不好回答,尤其是第4题。
NO