首页 > 解决方案 > C ++:如果括号为空,为什么不抛出错误对象?

问题描述

我是异常处理的新手,所以我不明白为什么在这段代码中,如果我用空括号创建了一个对象,它不会抛出异常对象,但如果我将参数传递给构造函数,它就可以正常工作。如果这与构造函数的类型有关,您能否提及不同类型的构造函数,以便我可以用谷歌搜索它们。提前致谢。

class test {
public:
    class error {};
    test(){
        throw error();
    }
};

int main()
{
    try {
        test p();
    }
    catch(test::error)
    {
        cout <<"Error caught!"<< endl;
    }
    return 0;
}

标签: c++

解决方案


令人烦恼的解析test p();(这是函数声明)。

使用test p{};ortest p;代替


推荐阅读