為什麼c 裡返回引用是危險的,但msdn還是寫了這樣的用法?

時間 2021-05-30 00:12:07

1樓:小島上的做題家

你的程式UML畫下來應該是一棵樹或者幾棵樹。構建時是從下往上構建,釋放時從上往下釋放。

乙個object儲存的reference,其值一定要在這個架構中比這個object靠下,才是安全的,因為它的life time比你這個object長。

本質上,你只要定義明白這個ref比它的使用者活得長就不危險。

但現實中還是很危險,因為團隊流動性太大,很多人寫程式不看整體就是打補丁,不會管上面這個原則。所以一開始就不要返回或者儲存ref。

Scott Meyers說過,你的程式要寫的不給後人犯錯的機會。

2樓:大魚

危險是指知識掌握不夠容易翻車,推薦是因為,這就跟踩油門一樣,確實可以提高車速

比如,正常返回乙個物件,來個值拷貝,中間就有效能損失,返回引用就可以節省這個拷貝的過程.要是這個物件複雜,或者傳參次數有點多,這就能省好多了

3樓:d41d8c

看到「There aretworeasons」而下面列了三點的時候,就該知道作者寫文章時很可能表達力受了嚴重損傷。

可能作者腦子裡是清楚的,但表達出來的內容完全是亂七八糟。

不建議看這種內容混亂的文章,否則只會越看越迷惑。

C 輸出運算子過載,為什麼要返回引用才能實現連續輸出?返回物件不可以實現連續輸出嗎?

石大頭 其他答主說得很好了。題主應該更進一步體會值語義和物件語義的區別,物件語義天生是不支援拷貝的。比如說Person laowang laowang 拷貝一下難道代表有兩個老王嗎 回答最長的那個我覺得太複雜了。為什麼要返回引用其實很簡單,輸出運算子 是乙個運算子,跟算術運算子 一樣,有著相應的規則...

c 中指標的作用是什麼呢?單純的用引用不可以嗎?

feverzsj 引用在c 中,只是實際物件的別名,本身甚至可以不具實體 在可能的情況下,編譯器可以完全優化掉引用,使用實際物件替換引用,其他情況下引用會使用指標實現 而指標是一種實體,它表示的是乙個位址。 florent 說點感受,c 可以在堆上分配記憶體,但是也可以在棧上分配記憶體。棧上的記憶體...

C 中的 this 為什麼是指標而不是引用?

中二青年 這個是c 作者的個人主頁,可以看一下答案,裡面還回答了,為什麼引入ref的原因。Why is this not a reference?Because this was introduced into C really into C with Classes before referenc...