作者spong (请输入ID)
看板C_and_CPP
标题[问题] 预设引数
时间Tue Jul 21 12:36:39 2020
在书中看到的问题,想了很久还是无解
书中叙述:区域变数不可以用作预设引数,除此叙述
预设引述可以是型别,能够转换「为参数
型别的任何算式」
举例:
//前置作业
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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1595306201.A.C3D.html
1F:→ firejox: 你的问题跟预设引数没关系,而且你回答了你的问题了 07/21 13:02
2F:→ firejox: 没被遮蔽的变数可以修改 07/21 13:02
3F:推 Killercat: Koenig Lookup应该就是你想要找的答案我猜 07/21 14:53