作者SHBK (耶稣与玛丽之链)
看板C_and_CPP
标题Re: [问题] 关於* const &ref
时间Sat Apr 22 18:09:57 2006
※ 引述《seansylin (sylin)》之铭言:
: 我可以
: int a=1024;
: int *pt=&a;
: int *&ref=pt;
: 但不行
: int a=1024;
: int *&ref=&a;
因为reference维护的是某个物件的"address"
而上面那行&a 会有个隐式型别转换
你的compiler 会产生个暂时物件
比如说会把你 int *&ref=&a 的 code转成
int *tempPtr = &a;
int *&ref = tempPtr;
可是一旦你改变ref的话 影响的将是 tempPtr 而不是 a
所以C++ 并不允许non-const reference代表那些需要暂时替代品的物件或数值
而const reference 可以 因为你没法改变
所以你下面的程式ok
: 但是可以
: int a=1024;
: int * const &ref=&a;
: 为什麽呢?
: 那麽
: int a=1024;
: int *pt=&a;
: int * const &ref=pt;
: 又是什麽意思呢?
: 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.163.142.103
※ 编辑: SHBK 来自: 218.163.142.103 (04/22 18:11)
1F:推 seansylin:了解,谢谢! 04/22 19:18