C 中,使用範圍for語句改變字串中的字元時,引用為何能重新繫結?

時間 2021-06-02 03:20:12

1樓:tearshark

又乙個深受只有引用語義的語言毒害的青年。

不過,即便只有引用語義的語言,內建的int之類的也是值語義啊。

總之,先學c/c++以外的語言,就是毒害無窮。連最基本的計算機工作方式都是稀里糊塗的。也就別指望能做出什麼貢獻了。碼農到30歲,回家賣白菜去吧!

2樓:sin1080

C++的range based for loop,是可以展開成等價的常規for語句的。對C++17之前的range for,

for ( range_declaration : range_expression )

loop_statement

等價於{

auto && __range = range_expression ;

for (auto __begin = begin_expr, __end = end_expr; __begin != __end; ++__beginrange_declaration = *__beginloop_statement

其中對於定義了begin和end函式的string,begin_expr等價於呼叫.begin(),end_expr等價於呼叫.end()。

代入一下你就發現為什麼這個引用可以「重新繫結」了。

因為展開以後,實際上引用出現在for的內層scope裡面,每個迭代都會初始化出乙個新的,並在迭代結束後出scope銷毀。

3樓:Milo Yip

因為 range-based for 是在每個迭代裡繫結乙個元素:

for(

auto&c

:s)c

=toupper(c

);// 等價於

for(

auto

itr=s.

begin

();itr!=s

.end

();++

itr)

商業專案對使用開源軟體的態度和使用範圍是怎樣的?

李凡希 我們以前是產品中用的所有開源 自由軟體元件都要整理出來,填表給法務部審核,然後產品中內建的許可證協議也都要給法務部審核。對於GPLv2,可以合理使用,通過程序間通訊等方式歸避傳染性。GPLv3由於涉及專利,禁止使用。MIT Apache等也都可以合理使用。 Archer Sun 我不確定惠普...

為什麼 C 中使用虛函式時會影響效率?

C 中使用虛函式不會影響效率。你遇到的場景,都沒到需要考慮流水線 friendly 的程度,先把東西寫出來,別想沒用的。 maple 因為查詢虛函式表的時候會有效率損失,可以通過模板的CRTP技術實現靜態繫結,詳見 C CRTP Curiously Recurring Template Patter...

C 中使用thread庫開多執行緒可以開無限多個嗎?

Seeman 不可以,在作業系統中有兩個資源會限制開子執行緒的個數。首先每個子執行緒有乙個file descriptor windows裡面叫handle 作業系統分給每個程序的fd個數有上限的。其次每個子執行緒會占用stack,編譯時,每個程序stack的大小是有限制的,編譯選項可以設定stack...