gpt4 book ai didi

c++ - 什么时候故意造成未定义的行为是公平的?

转载 作者:太空狗 更新时间:2023-10-29 21:02:46 25 4
gpt4 key购买 nike

<分区>

如果您违反对模板类型的任何要求、给出错误的函数参数或任何其他违约行为,标准库习惯性地允许未定义的行为。在用户库中允许这样做是否被认为是一种好的做法?什么时候这样做才公平?

考虑为容器编写一个operator[]:

template <typename t>
T& container<T>::operator[](int i)
{
return internal_array[i];
}

如果 i 索引在 internal_array 的边界之外,我们会遇到未定义的行为。我们应该允许这种情况发生还是进行边界检查并抛出异常?

另一个例子是一个接受 int 参数但只允许受限域的函数:

int foo(int x)
{
if (x > 0 && x <= 10) {
return x;
}
}

如果 x 不在域内,执行将到达函数的末尾而无需 return 语句 - 这会产生未定义的行为。

库开发人员是否应该为允许或不允许这样做而感到难过?

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