標籤:

這一段 C++ 代碼有什麼樣的問題?

更新: 第一次在知乎上拋出個問題,本想打個醬油, 無奈姿勢不對, 被認為各種屌,各種釣魚,c++噴子。 再次申明無意冒犯各位, 真心是在學習中的一點小問題,想和大家分享下,沒想問題大低級。 原問題保留, 代碼已經按照大牛意見更新。

--------------------

最近遇到一個坑。暫且稱之為坑,因為我確實之前不知道代碼錯在什麼地方,我好奇有多少人知道這個坑,所以來問問,你只需要回答知道或者不知道,後面我更新指出坑在什麼地方。代碼如下:

const std::string testStr("test");
const char *charPtr;
char first;
charPtr = reinterpret_cast&(testStr.substr(0, 1).c_str());
first = charPtr[0];


把一個const char*用reinterpret_cast給char*,這不叫坑,叫亂來。


喲~ reinterpret_cast還能褪掉const?

編譯器都不讓過,你這C++是跟誰學的?

vc6吧?

------------------------------------------------------------------------

我見過釣魚的多了,就是沒見過態度這麼屌的。弄個substr出來就想釣魚,這手段不高啊。


這代碼寫的一看就知道連基本內存管理都沒學好就開始人云亦云的噴c艹了


我好奇有多少人知道這個坑,所以來問問,你只需要回答知道或者不知道

我好奇有多少人知道我帥,所以來問問,你只需要回答知道或者不知道。


不不不 兄弟 空大說的const 不是const std::string 的 const 所以你修改問題描述並沒有用。。。。


這有啥可討論的,你硬是要轉的話用const_cast換掉reinterpret_cast不就行了。

再一個你把substr產生的匿名string的c_str()給返出來了,這顯然無效啊,離開當前statement立即被析構了,所以運行時行為變成了未知。

補充一下:這哪裡算是什麼坑,感覺題主還需要將C++入門書熟讀幾遍才是。


你這是在冬天結冰的湖面上用大鎚掄冰面,然後問這樣會不會掉冰窟了


這有什麼好問的,寫這代碼的人是坑,快別坑c++了,正而八經的c++程序員都不會寫這種代碼。


好吧, 分分鐘教做人了。 我錯了,姿勢不對,再次申明, 我不噴C++, 不是來釣魚的, 真是覺得這個問題相對於我的c++水平有點隱晦。 所有出來打打醬油,錯在不改在各位大俠面前問這麼low的問題。我再更新下問題, 到此為止吧。


支持 @叛逆者

我沒啥好補充的了...

常識啊,常識...


推薦閱讀:

為什麼C語言不引入類這種語法?
Linux內核應該怎麼去學習?
問一個函數指針問題?
自學c語言,有什麼好的建議或方法嗎?
C++標準庫中有哪些危險函數?

TAG:C | CC |