读书人

问一个引用的有关问题

发布时间: 2012-02-29 16:44:10 作者: rapoo

问一个引用的问题
为什么int * r;
int * &p = r;编译能通过
而 int r = 0;
int * &pr = &r;不能通过啊?

是不是引用的数据类型还必须和变量的类型一致啊?

[解决办法]
引用所关联的东西必须是一个有存储的实体,而&i只是一个值,它不会保存在系统内任何地方的
[解决办法]
还是换本好点的C++书吧,比如C++ Primer
[解决办法]
建议楼主仔细看看C++Primer上讲的有关内容,里面说的很清楚:

int ival = 1024;

int &refVal = ival; // ok: refVal refers to ival

int &refVal2; // error: a reference must be initialized

int &refVal3 = 10; // error: initializer must be an object

但是:
const引用可以初始化为不同类型的对象或者初始化为右值(2.3.1节),如字面值常量:

int i = 42;

// legal for const references only

const int &r = 42;

const int &r2 = r + i;

同样的初始化对于非const引用却是不合法的,而且会导致编译时错误

读书人网 >C++

热点推荐