1
我使用info-string作爲默認參數聲明一個日誌記錄功能。(string&)string()和(string&)「」作爲默認參數有什麼區別?
void LogError(ErrorEnum error, string& infoStr = (string&)"")
當函數被調用時沒有額外的字符串,我得到試圖寫入日誌流以這樣的方式未處理的異常:
ofstream mystream;
//do some stuff
mystream<< "Error " << infoStr << " failed!" << endl;
如果ICH更改默認參數(字符串&)string(),異常不再發生。使用VS2013進行調試顯示,在這兩種情況下,infoStr的值都是「」。
那麼兩個聲明之間的區別在哪裏呢?
你爲什麼要轉換爲'string&'?不是'string&infoStr =「」'工作嗎? – Biffen