4.6.4 其他要说明的问题

    C++程序允许对用new申请的动态无名实体建立一个引用,如下所示。


    int&refNum=*new int;

    在撤销动态内存时,可以用“delete&refNum;”实现,结合前面所讲的限制可知,对new申请的动态数组建立引用是非法的。

    在引用声明一小节中提到过声明语句中的类型标识符必须与初始值的变量类型一致,当两者不一致时,编译器会指出错误,除非引用为const修饰的。在这种情况下,C++将生成临时变量,下列用法是合法的。


    const int&refInt=9;//如果去掉const则非法 int x; const double&refDouble=x;//如果去掉const则非法

    在早期的C++编译器中,去掉两句中的const,并不会引起错误,编译器可能只会给出相应的警告信息,但遵循新标准的编译器都会明确指出,去掉const后的语句是非法的,在两种情况下,必须用const修饰引用。

    (1)对非左值的引用,如上述代码中的常数9。

    (2)类型声明符与初始值的类型不一致,但可以转换。

    const修饰的引用是只读的无法改写,更有价值的应用体现在函数值的传递引用及调用时,关于这方面内容的介绍请参考第6章。