大家好!
检查我自己的代码,我想到了这个有趣的行:
const CString &refStr = ( CheckCondition() ) ? _T("foo") : _T("bar");
现在我完全不知所措,无法理解为什么它是合法的。据我了解,必须使用 r 值或 l 值初始化 const 引用。未初始化的引用不能存在。但 ()?运算符在将值分配给引用之前执行 CheckCondition() 函数。我现在可以看到,在执行 CheckCondition() 时, refStr 存在,但仍未初始化。如果 CheckCondition() 会抛出异常,或者使用 goto 语句传递控制,会发生什么?它会留下未初始化的引用还是我错过了什么?