[問題] 預設引數

看板C_and_CPP (C/C++)作者 (請輸入ID)時間5年前 (2020/07/21 12:36), 編輯推噓1(102)
留言3則, 2人參與, 5年前最新討論串1/1
在書中看到的問題,想了很久還是無解 書中敘述:區域變數不可以用作預設引數,除此敘述 預設引述可以是型別,能夠轉換「為參數 型別的任何算式」 舉例: //前置作業 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

07/21 13:02, 5年前 , 1F
你的問題跟預設引數沒關係,而且你回答了你的問題了
07/21 13:02, 1F

07/21 13:02, 5年前 , 2F
沒被遮蔽的變數可以修改
07/21 13:02, 2F

07/21 14:53, 5年前 , 3F
Koenig Lookup應該就是你想要找的答案我猜
07/21 14:53, 3F
文章代碼(AID): #1V5d3Pmz (C_and_CPP)
文章代碼(AID): #1V5d3Pmz (C_and_CPP)