C++ Interview Question test-3 question-2

来源:互联网 发布:js date unix时间戳 编辑:程序博客网 时间:2024/04/30 04:29
#include <iostream>#include <stdexcept>class A{public:    A(int n) : m_n(n) { std::cout << m_n; }    ~A() { std::cout << m_n; }private:    int m_n;};int f(int n){    if (1 == n) {        throw std::logic_error("0");    }    A l(n);    return f(n - 1) * n / (n - 1);}int main(){    try {        int r = f(3);        A a(r);    }    catch (const std::exception &e) {        std::cout << e.what() << std::endl;    }    return 0;}


答案: 32230

1. 出现异常时,会自动抛出,后面所有的语句都不执行,包括递归(其实这也是一种终止递归的方式), 但是该销毁的对象还是会依次销毁。

2. throw std::logic_error("0");“0”就是 exception.what()的内容


0 0
原创粉丝点击