7
我不知道如何在短題目中很好地解釋這個問題,所以讓我試試更長的解釋。假設我有這些異常類:您能否通過轉換運算符的類型捕獲異常?
class ExceptionTypeA : public std::runtime_error
{
// stuff
};
class ExceptionTypeB : public std::runtime_error
{
// stuff
operator ExceptionTypeA() const; // conversion operator to ExceptionTypeA
};
我可以這樣做,並讓它觸發catch塊嗎?
try
{
throw ExceptionTypeB();
}
catch (ExceptionTypeA& a)
{
// will this be triggered?
}
我要去猜測,不會,這是不幸的,但我認爲我會問,因爲我無法在網絡上找到或SO上的任何信息。是的,我意識到我可以在我的編譯器中運行該程序,看看會發生什麼,但是這不會告訴我標準對此行爲的描述,只是我的編譯器實現了什麼(我不相信它)。
Phew。這裏鬆了一口氣。 – sbi 2010-02-26 17:04:54
是否會覆蓋指向成員的指針?例如,指向成員數據的指針是逆變的,所以'int(Base :: *)'可以轉換爲'int(Derived :: *)'。如果我扔掉前者,我能抓住後者嗎?海灣合作委員會似乎不同意,但標準的措辭有點不清楚。 – max 2016-03-30 15:05:50