gpt4 book ai didi

c++ - 从 C++ 函数异常中通过引用返回对象安全吗?

转载 作者:太空狗 更新时间:2023-10-29 21:13:49 25 4
gpt4 key购买 nike

从 C++ 函数通过(常量)引用返回一个对象通常是异常安全的——无论返回哪种类型的对象(例如带有抛出复制构造器的类对象)?两个示例案例:

示例 1:

const T& f(const T& parm) {exception_safe_code; return parm;}

例子2:

template <typename T> struct X{ T t; T& get(){return t;} };

最佳答案

假设您要返回一个对象的引用,该对象在函数作用域之外仍然存在,并且该函数在返回之前没有任何潜在的抛出代码,那么... 是的,返回引用永远不会引发异常。

struct Foo
{
std::string x;
const auto& get_x() noexcept { return x; }
// ^^^^^^^^
// Safe and recommended.
};

您添加了一些示例 - fget 都是异常安全的,可以标记为 noexcept

关于c++ - 从 C++ 函数异常中通过引用返回对象安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858559/

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