关于函数模板,描述错误的是()
函数模板是C++新增的一种性质,它允许只定义一次函数的实现,即可使用不同类型的参数来调用该函数。这样做可以减小代码的书写的复杂度,同时也便于修改。但是,在代码中包含函数模板本身并不会生成函数定义,它只是一个用于生成函数定义的方案。编译器使用模板为特定类型生成函数定义时,得到的是模板实例(instantiation)。 A错误,函数模板必须由编译器根据程序员的调用类型实例化为可执行的函数。
#include<iostream> using namespace std; template<class T> T mymax(const T a,const T b) { return (a > b ? a:b); } //类模板定义 template<class T> class C { public: T max(const T a,const T b) const { return (a > b ? a:b); } T min(const T a,const T b)const //如果没有使用过,这个也不实例化 { return (a < b ? a: b); } }; //这个不叫类模板,虽然类里面有函数模板 class D { public: template<class T> T mymax(const T a,const T b) { return (a > b ? a:b); } void display(void)const { } }; int main() { int a = 1,b = 2; cout << mymax(a,b) << endl; float c = 1.0f,d = 2.5f; cout << mymax(c,d) << endl; double e = 1.0,f= 3.4; cout << mymax(e,f) << endl; C<int> cn; cout << cn.max(2,3) << endl; C<float> cf; cout << cf.max(1.0f,4.3f) << endl; D cd; cout << cd.mymax(3,5) << endl; return 0; }