先来看一段简单的C++代码:
#include <iostream> using namespace std; int T(int & a = 5) { a = 3; return 0; } void main() { int a = 0; T(a); cout<<a<<endl; }
经过编译,发现根本通不过。这是为什么呢?
我们都知道,“&”既可以作取地址符,又可以作引用符,但是程序中使用了“int T(int & a = 5)”,那么它到底是取地址符还是引用符呢?
可能你会说,这是一个引用符呀,只是默认值是5。最初,我这样写代码的时候也是这样认为的,但是编译器却指出了错误。
没办法,我只好给自己一个勉强的解释:带缺省值的参数不能作引用类型,作为引用类型的参数不能有缺省值,哈哈,只能这样想了!
修改成下面的代码就可以通过编译了:
1. int T(int a = 5)
2. int T(int & a)