您的位置:首页 > 职场人生

【面向对象程序设计常见面试题】函数模板与类模板有什么区别?(44)

2014-03-28 21:00 375 查看
函数模板的实例化是由编译程序在处理函数调用时自动完成的,

而类模板的实例化必须由程序员在程序中显式地指定。



1、函数模板

声明

template <typename 类型参数>

返回类型 函数名(模板参数){函数体}

template <class 类型参数>

返回类型 函数名(模板参数){函数体}

使用

函数名(模板实参表)

模板函数可以重载

函数模板与同名的非模板函数可以重载,但是先调用非模板的函数,再调用模板函数

#include <iostream>
using namespace std;
template <typename p1,typename p2>
void two_p(p1 x,p2 y){
cout<<x<<" "<<y<<endl;
}
int main()
{
two_p(56,"zhang");
two_p(12.5,855);
return 0;
}


2、类模板

声明

template <typename 类型参数>

class 类名{类成员声明}

template <class 类型参数>

class 类名{类成员声明}

使用

类模板名 <实际类型名> 对象名

类模板名 <实际类型名> 对象名(实参表列)

函数类外定义

template <typename 类型函数>

函数类型 类名<类型参数>::成员函数名(形参表)

#include <iostream>
using namespace std;

template <typename T>
class Three{
public :
Three(T a,T b,T c);
T sum();
private:
T x,y,z;
};

template <typename T>
Three<T>::Three(T a,T b,T c){
x = a;
y = b;
z = c;
}

template <typename T>
T Three<T>::sum(){
return x+y+z;
}
int main(){
Three<int> sum3_1(3,5,7);
Three<double> sum3_2(3.1,5.2,7.5);
cout<<sum3_1.sum()<<endl;
cout<<sum3_2.sum()<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐