吸气剂可以标记为“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
让“编译器”有机会添加额外的检查并可能处理异常异常。
对于这样的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
让“编译器”有机会添加额外的检查并可能处理异常异常。