定义一个普通类,类中包含一个指针和一个int值 。对该指针指向的对象所做的任意改变都将作用与共享对象,如果用户删除该对象,则造成悬垂指针。
假如我们编写
double dval = 3.14;
const int &ri = dval;
编译器会把这些代码转换成如以下形式的编码:
int temp = dval; // create temporary int from the double
const int &ri = temp; // bind ri to that temporary
如果 ri 不是 const,那么可以给 ri 赋一新值。这样做不会修改 dval,而是修改了 temp。期望对 ri 的赋值会修改 dval 的程序员会发现 dval 并没有被修改。仅允许 const 引用绑定到需要临时使用的值完全避免了这个问题,因为 const 引用是只读的。非 const 引用只能绑定到与该引用同类型的对象。
因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。