问题出现在这样的代码中:
#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
。怎么解决这个问题?
答案 0 :(得分:7)
C ++明确区分了引用和值复制。使用
catch (const std::exception& e)
通过引用而不是值来捕获。