先来看一段简单的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/archive/2010/11/08/1872133.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/17098
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!