您的位置:首页 > 其它

类模板、函数模板以及类成员函数在类外定义情况

2016-08-03 21:09 281 查看
1函数模板的写法

函数模板的一般形式如下:

Template <class或者也可以用typename T>

返回类型 函数名(形参表)

{//函数定义体 }

说明: template是一个声明模板的关键字,表示声明一个模板关键字class不能省略,如果类型形参多余一个 ,每个形参前都要加class <类型 形参表>可以包含基本数据类型可以包含类类型。

请看以下程序:

[cpp] view
plain copy

#include <iostream>

using std::cout;

using std::endl;

//声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小,class也可以被typename代替,

//T可以被任何字母或者数字代替。

template <class T>

T min(T x,T y)

{

return(x<y)?x:y;

}

void main( )

{

int n1=2,n2=10;

double d1=1.5,d2=5.6;

cout<< "较小整数:"<<min(n1,n2)<<endl;

cout<< "较小实数:"<<min(d1,d2)<<endl;

system("pause");

}

1 、模板类和重载函数一起使用

两者一起使用时,先考虑重载函数,后考虑模板类,如过再找不到,就考虑类型转换,可能会带来精度的变化。

[cpp] view
plain copy

#include "iostream"

using namespace std ;

//函数模板

template <class T>

const T MAX(T a , T b)

{

printf("%s\n" , "template") ;

return (a > b) ? a : b ;

}

int MAX(int x , int y)

{

printf("%s\n" , "int int" );

return (x > y) ? x : y ;

}

int MAX(char x , int y)

{

printf("%s\n" , "char int" );

return (x > y) ? x : y ;

}

int MAX(int x , char y)

{

printf("%s\n" , "int char" );

return (x > y) ? x : y ;

}

int main(void)

{

int a = 3 , b = 5 ;

char x = 'x' ;

double c = 3.4 ;

cout<<MAX(a , b)<<endl ; //调用重载函数

cout<<MAX(c , b)<<endl ; //无对应的重载函数,则调用模板

cout<<MAX(a , x)<<endl ; //重载函数

cout<<MAX(x , a)<<endl ; //重载函数

cout<<MAX(c , a)<<endl ;

cout<<MAX(a) ;

system("pause") ;

return 0 ;

}

2 、类模板

(1)类模板的具体格式

template <class T>

class A

{

}

在类定义体外定义的成员函数,应该使用函数模板。

[cpp] view
plain copy

/*

类模板,但是在类外定义成员函数的时候,需要使用函数模板

*/

#include <iostream>

using namespace std ;

template <class T>

class Base

{

public :

T a ;

Base(T b)

{

a = b ;

}

T getA(){ return a ;} //类内定义

void setA(T c);

};

template <class T> //模板在类外的定义

void Base<T>::setA(T c)

{

a = c ;

}

int main(void)

{

Base <int>b(4);

cout<<b.getA()<<endl;

Base <double> bc(4);

bc.setA(4.3);

cout<<bc.getA()<<endl;

system("pause");

return 0 ;

}

注意成员函数在类外定义的情况。

3 、模板类

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