模板中的默认参数:
类似于函数的默认参数,模板也可以使用默认参数。
例如,下面程序中第二个参数U即使用char为默认值。
#include <iostream>
using namespace std;
template<typename T, typename U = char>
class A {
public:
T x;
U y;
};
int main() {
A<char> a;
A<int, int> b;
cout << "sizeof(a)=" << sizeof(a) << endl;
cout << "sizeof(b)=" << sizeof(b) << endl;
return 0;
}
运行结果(char是1字节,int是4字节):
sizeof(a)=2
sizeof(b)=8
另外,与函数默认参数类似,如果一个模板参数使用默认值,则它后面的所有参数都必须使用默认值。
例如,下面程序会编译失败,因为中间的参数没有提供默认值。
#include<iostream>
using namespace std;
template<class T = char, class U, class V = int> class A // 编译错误
{
// members of A
};
int main()
{
return 0;
}
编译失败,visual studio2015输出:
error C3747: 缺少默认 模板 参数: 参数 2