缺省函数是 C++的一个基本特色。缺省函数定义比较简单,也就是说,对于函数的某一个输入参数或者几
个输入参数,如果你没有特定的数值的话,那我们就会用缺省的数据进行代替。如果你在调用的过程中使用了
自己的数据,那么缺省数据将被我们自己定义的数据覆盖。下面就是一个缺省函数的示例:
1.
int
add(
int
m,
int
n = 10)
2.
{
3.
return m + n;
4.
}
如果调用呢,有什么区别?
1.
262:
int
p = add(2);
2.
00401488 push 0Ah
3.
0040148A push 2
4.
0040148C call @ILT+15(add) (00401014)
5.
00401491 add esp,8
6.
00401494 mov dword ptr [ebp-4],eax
7.
263: p = add(3, 4);
8.
00401497 push 4
9.
00401499 push 3
10.
0040149B call @ILT+15(add) (00401014)
11.
004014A0 add esp,8
12.
004014A3 mov dword ptr [ebp-4],eax
可以从上面的代码看到,如果单独输入一个数据 2,那么编译器帮我们默认输入了 10;如果输了的数据是
3、4 呢,那么编译器将用 4 代替默认的数据 10。所以说,编译器帮我们做了中间的替换和判断工作。那么回到
我们今天讨论的缺省模板类型上面,那会是什么样的情形呢?我们可以编写一个范例:
1.
template <typename type1, typename type2 =
int
>
2.
class data
3.
{
4.
type2 value;
5.
public:
6.
data(type2 m): value(m) {}
7.
~data() {}
8.
};