2016-05-20 8 views
0

に影響を及ぼさなかったMWEだ:私はxを期待して何例外はここで値

#include <iostream> 
#include <exception> 

using namespace std; 

int main() { 
    double x=1; 
    try { 
     throw 3.14; 
    } 
    catch(double x) { 
     x *= 2; 
     cout << x<<endl; 
    } 
    cout << ++x; 
    return 0; 
} 

は7.28になりますが、それはので、例外が値を変更していない2を示しています。誰もその理由を説明できますか?

+1

を使用すると、2 'x's – vu1p3n0x

答えて

3

奇妙な投げは例外としても機能します。

とにかく - あなたは外側がx、内側がxです。捕らえられた内なる者。これは値3.14をキャッチし、倍の6.28にして印刷します。外側のものは変更されません。

だから、最終coutは、外側xをインクリメントする(つまり、値1を持つ)と 'X'は、二重のアイデンティティを持っているのはなぜ(2)

+0

を持っていることを印刷します。それは '試しとキャッチ'がオブジェクトや関数であることを意味するのでしょうか? – yuxuan

+0

あなたは 'x'という2つのダブルスを持っています。 –

関連する問題