作者a3785lexx (Alex)
看板EE_DSnP
标题[请益] const char* &ptr ......
时间Fri Oct 16 23:50:41 2009
各位好,我又来问愚昧的问题了XD
就像标题所写的
我本来很卑劣的想要用
const char* &ptr = _target;//_target is char* _target
这样来作一个ptr拥有_target所指的位置
而且ptr又不占记忆体空间又不会怕他去改到*_target的值
但是!
正义果敢的g++发现了我的伎俩并且把他打了回票了...
我已经知道这样写compile绝对不会过了...
但我还是想要知道为甚麽不能让他过@@"
const char* ptr = _target//target is char* _target
会过,*ptr不能更改,很理想,但是会占空间
char* &ptr = _target//target is char* _target
也会过,改*ptr就是改target
const char &ptr = _target//target is char _target
还是会过,ptr不能改,也不占空间
但是...到底有甚麽道理非要不能给奸诈狡猾的 const char* & 过呢?
g++都很nice的,这其中一定有甚麽误会吧!?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.107.4
1F:推 anfranion:原PO想表达的是一个pointer的reference吗@@ 10/17 00:01
2F:→ a3785lexx:恩对啊 10/17 00:04
3F:→ ilway25:我猜 char* const &ptr = _target; 才会过 10/17 00:29
4F:推 bnsblue:楼上没错 10/17 00:30
5F:→ ilway25:原来的意思是 reference to "pointer to const char" 10/17 00:30
6F:→ bnsblue:另外若把_target变成 const char* _target也会过 10/17 00:30
7F:推 bnsblue:如果照原po的写法 修饰字"const"已经"跨进两层"了 因此 10/17 00:40
8F:→ bnsblue:不被允许 10/17 00:40
9F:推 bnsblue:唔...好像也不太对...先忽略那个两层的说法好了XD 10/17 01:03
10F:→ a3785lexx:恩我的意思其实是,const char &的时候就给过 10/17 23:47
11F:→ a3785lexx:也就是constant reference to character过了... 10/17 23:48
12F:→ a3785lexx:const char*也过了...pointer to a constant char... 10/17 23:50
13F:→ a3785lexx:所以是因为const char*这样他会复制一份,原来const与否 10/17 23:51
14F:→ a3785lexx:就不重要了,所以会过吗? 10/17 23:51
15F:→ a3785lexx:好像说错了..const char&好像是reference to constchar? 10/17 23:53
16F:推 bnsblue:reference不能用const修饰 所以楼上的才是对的 10/18 00:35