gpt4 book ai didi

iostream 运算符重载的 C++ 异常规范

转载 作者:行者123 更新时间:2023-12-04 23:11:55 25 4
gpt4 key购买 nike

如果调用 ostream operator<< 则未指定可能会失败或抛出任何异常,我从未遇到过这种情况。

  • 有没有ostream operator<<的情况会失败吗?
  • 如果没有,为什么标准不放noexcept这些重载的说明符?
  • 以下重载有效吗?好的做法?常用?
  • istream operator>> 同样的问题?

  • struct MyClass {
    int data;
    // I/O operators with noexcept specifier
    friend std::istream& operator>>(std::istream &in, MyClass &obj) noexcept;
    friend std::ostream& operator<<(std::ostream &out, const MyClass &obj) noexcept;
    };

    最佳答案

    原因没有operator >>operator <<标记为 noexcept是因为 std::basic_ios::exceptions .此成员函数存在于从 std::basic_ios 继承的所有对象中。并允许您配置流以针对某些故障模式抛出异常。如果运算符是 noexcept那么您不能将它们与设置了异常的流一起使用。

    关于iostream 运算符重载的 C++ 异常规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752411/

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