【面向对象程序设计常见面试题】函数模板与类模板有什么区别?(44)
2014-03-28 21:00
375 查看
函数模板的实例化是由编译程序在处理函数调用时自动完成的,
而类模板的实例化必须由程序员在程序中显式地指定。
1、函数模板
声明
template <typename 类型参数>
返回类型 函数名(模板参数){函数体}
template <class 类型参数>
返回类型 函数名(模板参数){函数体}
使用
函数名(模板实参表)
模板函数可以重载
函数模板与同名的非模板函数可以重载,但是先调用非模板的函数,再调用模板函数
2、类模板
声明
template <typename 类型参数>
class 类名{类成员声明}
template <class 类型参数>
class 类名{类成员声明}
使用
类模板名 <实际类型名> 对象名
类模板名 <实际类型名> 对象名(实参表列)
函数类外定义
template <typename 类型函数>
函数类型 类名<类型参数>::成员函数名(形参表)
而类模板的实例化必须由程序员在程序中显式地指定。
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; }
相关文章推荐
- 【面向对象程序设计常见面试题】赋值运算符和拷贝构造函数的区别与联系?(3)
- 【面向对象程序设计常见面试题】友元关系有什么特性?(22)
- 【面向对象程序设计常见面试题】对对象成员进行初始化的次序是什么?(11)
- 【面向对象程序设计常见面试题】类和对象之间的关系是什么?(11)
- 【面向对象程序设计常见面试题】对类的成员的访问属性有什么?(11)
- 【面向对象程序设计常见面试题】虚函数是怎么实现的?(已阅)
- 【面向对象程序设计常见面试题】派生新类的声明(xx)
- 【面向对象程序设计常见面试题】判断题
- 【面向对象程序设计常见面试题】数组在做函数实参的时候会转变为什么类型?
- 【面向对象程序设计常见面试题】派生中构造函数的几点说明(xx)
- 【面向对象程序设计常见面试题】赋值兼容(xx)
- 【面向对象程序设计常见面试题】多继承与虚函数之间的关系(已阅)
- 【面向对象程序设计常见面试题】运算符重载的三种方式?(7)
- 【面向对象程序设计常见面试题】类中成员变量怎么进行初始化?(11)
- 【面向对象程序设计常见面试题】流运算符为什么不能通过类的成员函数重载?一般怎么解决?(7)
- 【面向对象程序设计常见面试题】多态的作用?(已阅)
- 【C++程序设计常见面试题】说出字符常量和字符串常量的区别,并使用运算符sizeof计算有什么不用?(00)
- 【面向对象程序设计常见面试题】类的声明和实现的分开的好处?
- 【面向对象程序设计常见面试题】虚函数的定义的几点说明(已阅)
- 【面向对象程序设计常见面试题】什么叫静态关联,什么叫动态关联