[問題] 預設引數
在書中看到的問題,想了很久還是無解
書中敘述:區域變數不可以用作預設引數,除此敘述
預設引述可以是型別,能夠轉換「為參數
型別的任何算式」
舉例:
//前置作業
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
07/21 14:53, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章