首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在本例中没有抛出复制ctor实现?

为什么在本例中没有抛出复制ctor实现?
EN

Stack Overflow用户
提问于 2016-05-09 19:03:25
回答 1查看 98关注 0票数 1

请参阅这段代码

代码语言:javascript
复制
// copy-constructor
dumb_array(const dumb_array& other)
    : mSize(other.mSize),
      mArray(mSize ? new int[mSize] : 0),
{
    // note that this is non-throwing, because of the data
    // types being used; more attention to detail with regards
    // to exceptions must be given in a more general case, however
    std::copy(other.mArray, other.mArray + mSize, mArray);
}

为什么复制者被认为是不扔的?如果new int[mSize]在没有(nothrow)参数的情况下抛出std::bad_alloc是新的怎么办?还有std:复制和扔?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-09 19:10:08

这并不是因为你给出的理由( new可能会抛出)。

评论只提到了std::copy。分配ints永远不会抛出任何东西。这也是件好事,因为这会泄露mArray。这可能就是为什么会有这样的评论。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37123500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档