2

问题发生在这样的代码中:

#include <cstdlib>
#include <iostream>
#include <stdexcept>

using namespace std;

int main(int argc, char** argv) {

try {
    throw  runtime_error("Message");
} catch (exception e) {
    cout << e.what();
}
return 0;
}

我期待Message出现。但结果是std::exception。我认为virtual functions可以从超类引用中调用子类。如何解决?

4

1 回答 1

7

C++ 明确区分了引用和值副本。采用

catch (const std::exception& e) 

通过引用而不是值来捕获。

于 2013-01-31T16:55:35.503 回答