函数模板与类模板有什么区别
答案:2 悬赏:20 手机版
解决时间 2021-02-02 09:26
- 提问者网友:饥饿走向夜
- 2021-02-02 04:16
函数模板与类模板有什么区别
最佳答案
- 五星知识达人网友:独行浪子会拥风
- 2021-02-02 05:00
类模板,是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。
定义类模板的一般形式是:
template class 类名{类声明体};例如,template
class Smemory{…public:void mput(T x);…}表示定义一个名为Smemory的类模板,其中带类型参数T。
在类模板的外部定义类成员函数的一般形式是:
template
函数返回值类型 类名::成员函数名(形参表){函数体}例如:template
void Smemory::mput(T x){…}表示定义一个类模板Smemory的成员函数,函数名为mput,形参x的类型是T,函数无返回值。
类模板是一个类家族的抽象,它只是对类的描述,编译程序不为类模板(包括成员函数定义)创建程序代码,但是通过对类模板的实例化可以生成一个具体的类以及该具体类的对象。
与函数模板不同的是:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定,
其实例化的一般形式是:
类名 对象名
定义类模板的一般形式是:
template class 类名{类声明体};例如,template
class Smemory{…public:void mput(T x);…}表示定义一个名为Smemory的类模板,其中带类型参数T。
在类模板的外部定义类成员函数的一般形式是:
template
函数返回值类型 类名::成员函数名(形参表){函数体}例如:template
void Smemory::mput(T x){…}表示定义一个类模板Smemory的成员函数,函数名为mput,形参x的类型是T,函数无返回值。
类模板是一个类家族的抽象,它只是对类的描述,编译程序不为类模板(包括成员函数定义)创建程序代码,但是通过对类模板的实例化可以生成一个具体的类以及该具体类的对象。
与函数模板不同的是:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定,
其实例化的一般形式是:
类名 对象名
全部回答
- 1楼网友:零点过十分
- 2021-02-02 06:25
函数模板:
template max(const t a, const t b)
{
return (a>b ? a : b);
}
这样用:
//int
int a = 1, b = 2;
max(a, b);
//float
float c = 1.0f, d = 2.0f;
max(c, d);
//double
double e = 1.0, f = 2.0;
max(e, f);
//...
类模板:
template
class c
{
public:
t max(const t a, const t b)
{
return (a>b ? a : b);
}
};
对这个类进行实例化:
//int
c cn;
//float
c cf;
//double
c cd;
//...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯