int T(int & a = 5){....} 对吗?

先来看一段简单的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)

原文地址:https://www.cnblogs.com/joeblackzqq/p/1872133.html