这是如何返回对索引为i ??
的动态分配数组元素的引用 int& dynamic_array::operator[](unsigned int i) {
if (i >= get_size())
throw exception(SUBSCRIPT_RANGE_EXCEPTION);
else
return array[i];
}
答案 0 :(得分:0)
是的,这是正确的 - Alexander Shishenko
由于
答案 1 :(得分:0)
通过尝试以一种优雅的方式总结评论,您可以使用类似的内容:
#include <stdexcept>
#include <string>
int& dynamic_array::operator[](size_t index)
{
if (index >= size)
throw std::out_of_range{"Index too large " + std::to_string(index)};
return elements[index];
}
a。 size_t确保索引为0或正数
b。在这些情况下,out_of_range是我们的标准例外情况
c。异常消息内容丰富
如果我们想更进一步,通常也需要const和非const版本。为了避免代码重复,您应该这样移动:
#include <stdexcept>
#include <string>
#include <utility>
const int& dynamic_array::operator[](size_t index) const
{
if (index >= size)
throw std::out_of_range{"Index too large " + std::to_string(index)};
return elements[index];
}
int& dynamic_array::operator[](size_t index)
{
return const_cast<int&>(std::as_const(*this)[index]);
}
(std:as_const()属于C ++ 17,否则请考虑static_cast <>)