为啥下面这种写法没法typedef指向const对象的指针
const string* str1 = new string("hello");pstring str2 = str1;
■网友
首先感谢各位抽时间回答这个问题。如下是自己研究了一下这个问题,整理了下心得,望各位大神不吝赐教。其实提问里面有一点写错了。typedef const string * pstring;const string *str1 = “hello”;\t//无法编译通过,const char *的只能不用初始化const string *的指针pstring str2 = \u0026amp;str1; //无法编译通过,const string **的指针不能被pstr初始化问题的本意如下,但是阴差阳错的多加了个*变成上面的代码导致无法编译通过。其实写成如下是可以编译通过并运行的。typedef const string * pstring;const string str1 = “hello”;pstring str2 = \u0026amp;str1;这个提问的本来目的是想研究一下typedef和指针的类型重定义的问题typedef const string * pstring;const string str1 = “hello”;const string str2;pstring str3 = \u0026amp;str1;str3 = \u0026amp;str2;\t//允许修改指针地址str3 = \u0026#39;x\u0026#39;;\t//编译失败,不能通过const string *类型的指针修改该指针指向的对象的值,证明pstring为typedef重定义的const string *指针类型。轮子哥 @vczh 的示例直接new了一个string对象并且用str1指向它,str2也指向“hello”。const string * str1 = new string("hello");pstring str2 = str1;继续加上如下测试代码。const string str3;str2 = \u0026amp;str3;\t//允许修改指针地址str2 = \u0026#39;x\u0026#39;;\t//编译失败,不能通过const string *类型的指针修改该指针指向的对象的值,证明pstring为typedef重定义的const string *指针类型。总结一下,关于typedef和指针的定义问题。1) 定义const指针类型 typedef string const * pstring; 此处有陷阱,typedef string * pstring; const pstring str1 等同于 string * const str1,而不是const string * str1;2) 定义指向const对象的指针类型 typedef const string * pstring;
■网友
str1已经是指针了,为什么还要取地址?
推荐阅读
- 家里这种床单可不要扔了,要比古董还值钱,难怪有钱人都收藏起来
- 『呼吸衰竭』这种病小心拖成呼吸衰竭! 天冷了别大意
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 西安两男子从网上学会这种技术,竟专门用来......刑拘!
- 为啥5G和2.4G默认的BSSID是相同的
