3.1.4 常引用
使用const修饰符可以说明引用,被说明的引用为常引用。其定义格式如下:
- const 数据类型 & 引用名;
例如:
- int x=2;
- const int &n=x;
其中,n是一个整型变量的常引用,不能通过该常引用更新对象。如:
- n++; //错误
但执行x++是正确的。
在实际应用中,常引用往往用作函数的形参,这样该函数中不能更新该参数所引用的对象,从而保护实参不被修改。
例如,有以下程序:
- #include <iostream.h>
- class Sample
- { int n;
- public:
- Sample(int i) { n=i; }
- int getn() const { return n; }
- };
- int add(const Sample &s1,const Sample &s2)
- { int sum=s1.getn()+s2.getn();
- return sum;
- }
- void main()
- { Sample s1(100),s2(200);
- cout << "sum=" << add(s1,s2) << endl;
- }
本程序的执行结果如下:
- sum=300
只有常成员函数才能操作常数据成员,没有使用const关键字说明的成员函数不能用来操作常数据成员。上述程序中的getn被说明为常成员函数,因此,它可以对常引用s1和s2进行操作,如果不将getn函数说明为常成员函数,则以下语句:
- int sum=s1.getn()+s2.getn();
出现如下的编译错误:
- 'getn' : cannot convert 'this' pointer from 'const class Sample' to 'class Sample &' Conversion loses qualifiers