吸气剂可以标记为“noexcept”吗?

Can getters be marked `noexcept`?

对于这样的class:

class CharMatrix
{
public:
.
.
.

private:
    int m_Y_AxisLen;
    int m_X_AxisLen;
    char m_fillCharacter;
    mutable std::vector< std::vector<char> > m_characterMatrix;
}


inline const int& CharMatrix::getY_AxisLen( ) const
{
    return m_Y_AxisLen;
}

inline const int& CharMatrix::getX_AxisLen( ) const
{
    return m_X_AxisLen;
}

inline const char& CharMatrix::getFillCharacter( ) const
{
    return m_fillCharacter;
}

inline std::vector< std::vector<char> >& CharMatrix::getCharacterMatrix( ) const
{
    return m_characterMatrix;
}

能否将所有这些getter成员函数标记为noexcept?这些 getter 中的任何一个有可能抛出吗?

另外一个问题是operator[] of std::vector 可以抛吗?我检查了 cppreference 但没有提到异常。

Can one mark all of these getter member functions as noexcept?
Is there any chance that any of these getters might throw?

您可以将它们标记为 noexcept

一个简单的return(通过引用)不能抛出。
根据复制的类型,return by copy 可能会抛出异常。

can operator[] of std::vector throw?

  • 对于有效索引,没有。
  • 无效索引,您在UB。它没有标记为 noexcept 让“编译器”有机会添加额外的检查并可能处理异常异常。