cost 270 ms
我是否正确理解 RAII 和复制/交换习语? - Do I understand RAII in conjunction with the copy/swap idiom correctly?

管理资源句柄(文件句柄、gpu 句柄、互斥体)的 class 想要防止资源句柄被复制,因此包装器 ZA2F2ED4F8EBC2CBB4C21A29DC40 的解构不会自动访问资源句柄一次且仅一次因为 object 的生命周期已经结束,并且(希望)不再存在指向包装器的引用或指针。 5(半)的复制/ ...

复制和交换习语和移动操作之间的交互 - Interaction between copy-and-swap idiom and move operations

我正在尝试制作一个程序来实现“复制和交换”习语和move control operations之间的交互,因此我编写了以下代码: 对我来说一切都很好,所以我认为在1 ,copy-ctor 由 copy-asignment 运算符调用以初始化其参数(按值获取),然后使用交换。 在“2”中,我从 ...

为什么基类中的复制和交换会导致派生类中的复制赋值运算符被隐式删除? - Why does copy-and-swap in a base class cause the copy-assignment operator to be implicitly deleted in the derived class?

仅在GCC和Clang 中测试,基类中存在按值传递的复制赋值运算符(在实现复制和交换(或复制和移动)习惯用法时很有用)导致复制赋值运算符在派生类被隐式删除。 Clang 和 GCC 同意这一点; 为什么会这样? 示例代码: ...

当我复制和交换成语时,为什么我的复制构造函数不被调用? - why isn't my copy constructor called when I do a copy and swap idiom?

在下面的代码中,当使用赋值运算符时,为什么没有调用复制构造函数或为什么没有与之对应的打印? 上面代码的输出是: Person copy constructor with Ryan Person copy constructor with Ryan Person copy assignm ...

共享指针的复制和交换效率 - Copy&Swap efficiency for shared pointers

这可以看作是后续操作,例如为什么“交换”共享指针分配? 。 问题是关于在boost中使用的Copy&Swap习惯用法。 我确实知道复制和交换的好处是重用了现有代码,从而避免了重复和错误。 但是有2种情况(并非只有1种可以减少到其他情况)不是最佳的: 智能指针实例相同 ...

什么是四规则(半规则)? - What is the Rule of Four (and a half)?

为了正确处理 object 复制,经验法则是三法则。 对于 C++11,移动语义是一回事,所以它是五法则。 但是,在这里和互联网上的讨论中,我还看到了对四规则(半)的引用,它是五规则和复制和交换习语的组合。 那么究竟什么是四法则(半法则)? 需要实现哪些功能,每个功能的主体应该是什么样的? 哪个f ...

如何为抽象类正确制作深层副本? - How to correctly make deep copy for abstract classes?

我正在研究一个碰撞系统,我需要为其复制实体的对撞机。 我制作了这样的系统,例如我不必一成不变地想如何处理碰撞(而且我可能会开始使用AABB,但可能会更改为SAT),但是无论如何我都需要制作对撞机的深层副本将使用。 一方面,必须进行深度复制,而复制和交换的习惯用法似乎是我应该去的地方。 ...

为什么在使用赋值运算符时使用复制和交换? - Why do we use copy and swap when using assignment operator?

使用复制和交换方法时,我对赋值运算符有疑问。 假设我们有一个很好的复制构造函数,它可以深度复制所有指针和动态分配的变量。 那么,上面的代码和下面的代码有什么区别? 因为我们有一个好的复制构造函数,所以我认为在operator =函数内部创建了另一个对象s。 那么,使用非抛 ...

在副本和交换习语中实现交换 - Implementing the swap in the copy and swap idiom

下面什么是复制和交换习惯用法以及如何为我的班级提供交换功能 ,我尝试实现交换功能,如后面接受的答案选项2(具有调用成员函数的自由函数)而不是直接友好前链接中的自由功能。 但是以下不编译 我知道复制和交换习惯在这里是过度的,但它也允许通过复制构造函数(1)对内部状态强制执行一些约束( ...

重置对象 - Reset an object

最近,我经常通过使用operator=为其分配新值来重置对象。 我的大多数课程都有一个copy constructor和operator=使用“ copy and swap”惯用语定义。 在大多数情况下,它虽然没有达到应有的效率,但却可以正常工作,但这在大多数情况下都没有关系。 在一种情况 ...

为什么std :: vector有两个赋值运算符? - Why does std::vector have two assignment operators?

自2011年以来,我们同时拥有复制和移动任务。 但是, 这个答案非常有说服力地说,对于资源管理类,只需要一个赋值运算符。 例如,对于std::vector ,这看起来像 这里重要的一点是,论证是以价值为基础的。 这意味着在输入函数体的时刻,大部分工作已经由other构造完成(如果可 ...

何时复制和交换习语不适用 - When is copy-and-swap idiom not applicable

看完此有关的复制和交换成语我读过这个这下称(2): (2)当不能使用复制和交换习语时,复制赋值运算符的典型声明 我们何时应该避免使用复制和交换习惯用法? 什么时候“完全不能使用”? 是否有现实生活中的情况,即复制和交换以及零规则都不适用? 我确实找到了这个问 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM