对于非const 引用形参有以下几点要注意的:
1. 非const 引用形参只能与完全同类型的非const 对象关联,请看如下例子:
/* Note:Your choice is C IDE */
#include<iostream>
using namespace std;
int change(int &val)
{
return ++val;
}
void main()
{
const int a=2;
change(a); //wrong
short b=3;
change(b); //wrong
change(0); //wrong
int c=3;
int d=4;
change(c+d);//wrong
}
这些情况的调用都是错误的。
2 . 用字符串常量作为实参去初始化非const string 引用形参也是错误的,其错误和上例子的change(0)调用是一样的:不能用const 变量去初始化非const 对象。
因此应该将不需要修改的引用形参定义为const 引用。普通的非const引用形参在使用时不太灵活。这样的形参即不能用cosnt对象初始化,也不能用字面值或产生的右值表达式进行初始化。