gpt4 book ai didi

C++ - 为什么它有强大的异常保证?

转载 作者:行者123 更新时间:2023-12-01 21:43:27 25 4
gpt4 key购买 nike

在《C++ 编程语言》(第 4 版)中,Stroustrup 在讨论异常时显示了以下代码片段(更正版本取自 this errata):

template<typename T, typename A>
void vector<T,A>::reserve(size_type newalloc) // flawed first attempt
{
if (newalloc<=capacity()) return; // never decrease allocation
vector<T,A> v(newalloc); // make a vector with the new size
copy(vb.elem,vb.elem+size(),v.begin()); // copy elements
vb.space = size();
swap(*this,v); // install new value
} // implicitly release old value

他还表示“这具有提供强有力保证的良好特性”。然而,在他之前的几页中提到 std::copy 并没有提供强有力的异常保证。这是一个错误,还是我遗漏了什么?

最佳答案

François pointed outstd::copy 正在更改 v,它不是 this 的成员。因此,如果失败,this 不会改变。

关于C++ - 为什么它有强大的异常保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62239627/

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