作者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