gpt4 book ai didi

c++ - 在 C++ 中通过指针捕获异常

转载 作者:IT老高 更新时间:2023-10-28 13:57:55 25 4
gpt4 key购买 nike

我发现捕获异常有三种方式,有什么区别?

1) 按值(value)捕获;

2) 通过引用捕获;

3) 指针捕获;

我只知道按值捕获会调用对象的两个拷贝,按引用捕获会调用一个。那么如何通过指针捕获呢?何时使用指针捕获?除了抛出一个对象,我可以像这样抛出一个指向对象的指针吗?

class A {}

void f() {

A *p = new A();
throw p;


}

最佳答案

推荐的方式是按值抛出,按引用捕获

您的示例代码抛出了一个指针,这是一个坏主意,因为您必须在 catch 站点管理内存。

如果您真的觉得应该抛出一个指针,请使用智能指针,例如 shared_ptr

无论如何,Herb Sutter 和 Alexei Alexandrescu 在他们的 C++ 编码标准一书中很好地解释了这一点,我对此进行了解释。

C++ Coding Standards: Throw by Value, Catch by Reference .

关于c++ - 在 C++ 中通过指针捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com