小编Fre*_*red的帖子

通过引用,临时,终身问题捕获异常对象

请考虑以下代码:

#include <iostream>
#include <stdexcept>

void foo()
{
    throw std::runtime_error("How long do I live?");
}

int main()
{
    try
    {
        foo();
    }
    catch (std::runtime_error& e)
    {
        std::cout << e.what() << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我可以通过引用捕获异常,不是std::runtime_error("How long do I live?")rvalue?

为什么异常对象在catch块中仍然存在?

究竟抛出异常对象存储在哪里?他们的一生是几岁?

c++

5
推荐指数
2
解决办法
885
查看次数

STL分配器和运算符new []

是否存在operator new[]用作分配器的STL实现?在我的编译器上,Foo::operator new[]私有化并没有阻止我创建一个vector<Foo>......是什么行为保证了什么?

c++ stl new-operator allocator

5
推荐指数
1
解决办法
1061
查看次数

标签 统计

c++ ×2

allocator ×1

new-operator ×1

stl ×1