gpt4 book ai didi

c++ - operator++() nothrow 不编译

转载 作者:行者123 更新时间:2023-11-30 00:46:47 26 4
gpt4 key购买 nike

为什么我不能让 operator++() 不抛出?

这可能是使用后缀++ 运算符(相对于前缀++ 运算符)的少数优势之一。

例如,这段代码不编译

class Number
{
public:
Number& operator++ () // ++ prefix
{
++m_c;
return *this;
}

Number operator++ (int) nothrow // postfix ++
{
Number result(*this); // make a copy for result
++(*this); // Now use the prefix version to do the work
return result; // return the copy (the old) value.
}

int m_c;
};

附带说明一下,后缀运算符也可以是线程安全的。

最佳答案

nothrow是一个常量,用于传递给 operator new 以指示 new 不应在出错时抛出异常。

我想你想要的是noexcept .

关于c++ - operator++() nothrow 不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265178/

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