在C++11中添加了对函数模板默认参数的支持。
代码如下:
#include<iostream>
using namespace std;template<typename T = long ,typename U = int >
void myTest(T t = 'A',U u = 'B')
{cout << "t = " << t << " u = " << u << endl;
}int main()
{myTest('a', 'b');//自动推导,根据传递的实参myTest<int>('a', 'b');myTest<char>('a', 'b');myTest<int, char>('a', 'b');myTest<char, int>('a', 'b');myTest();return 0;
}
测试结果:
默认的函数参数不能用于类型推导。
代码如下:
#include<iostream>
using namespace std;template<typename T ,typename U >
void myTest(T t = 'A',U u = 'B')
{cout << "t = " << t << " u = " << u << endl;
}int main()
{myTest();//errorreturn 0;
}
类模板可以有默认的模板参数。
代码如下:
#include <iostream>
using namespace std;template<typename T = int ,T t = 520>
class Test
{
public:void print(){cout << "value = " << t << endl;}
};int main()
{Test<> t;//记得写<>t.print();return 0;
}
测试结果: