看板 C_and_CPP 關於我們 聯絡資訊
在書中看到的問題,想了很久還是無解 書中敘述:區域變數不可以用作預設引數,除此敘述 預設引述可以是型別,能夠轉換「為參數 型別的任何算式」 舉例: //前置作業 typedef string::size_type sz string screen(sz ht=24, sz wid =80, char); // wd、def、ht的宣告必須出現在一個函式之外 sz wd =80; char def = ' ' ; sz ht() ; string screen(sz=ht(),sz=wd,char=def); string window = screen(); //呼叫screen(ht(),80,' ') //其他函式出現 void f2() { def = '*' ; //變更預設值 sz wd = 100 ; //遮蔽wd的外層定義,並未更改 window = screen(); //呼叫screen(ht(),80,'*') } 我的問題: 既然在f2函式中wd已經遮蔽外層,卻並沒有更改外層的screen中wd值 然而def在f2中卻能修改,這是為什麼呢????? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.213.185.143 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1595306201.A.C3D.html
firejox: 你的問題跟預設引數沒關係,而且你回答了你的問題了 07/21 13:02
firejox: 沒被遮蔽的變數可以修改 07/21 13:02
Killercat: Koenig Lookup應該就是你想要找的答案我猜 07/21 14:53