如何在子类中取消删除构造函数?

努尔伯·阿尔皮斯巴耶夫

因此,在我们的代码库中有以下结构:

struct NonCopyable
{
private:
    NonCopyable(const NonCopyable &) = delete;
    NonCopyable &operator=(const NonCopyable &) = delete;
};

以及从中继承的结构:

struct Foo : NonCopyable {

}

现在,我如何制作一个从继承Foo但可复制的结构?

尝试了一下,但没有成功:

struct CopyableFoo : Foo {
    CopyableFoo (const CopyableFoo &) = default;
    CopyableFoo &operator=(const CopyableFoo &) = default;
}

我最终要实现的目标是编译良好:

CopyableFoo foo;
auto bar = foo; // copy works
讲故事的人-Unslander Monica

未删除的默认副本文件将通过依次复制每个库和成员来工作。它依靠这些基础复制者来完成这项工作。如果不存在,则无法选择任何有意义的动作来代替。

基类是不可复制的,这是其不变式的一部分,您不能强制编译器撤消该操作。您唯一的选择是自己实现复制。在这种情况下,只有程序员才能选择有意义的语义。

复制分配也是如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在子类构造函数中调用父构造函数?

如何在Swift子类中实现复制构造函数?

Dart-如何在子类的构造函数中调用超类的工厂构造函数?

C ++-如何在析构函数中删除子类

如何让子类中的构造函数继承构造函数或基类?

在 Moose 中,如何在子类中为超类指定构造函数参数?

我们如何在C ++中从子类中调用父级重载的构造函数?

基类中删除的构造函数会影响子类吗?

Java如何在调用父构造函数之前覆盖子类中的父类属性

如何在调用父构造函数之前覆盖子类中的父类属性?

如何在基类构造函数中为每个子类执行特定任务

如何在子类中触发父模板类的复制构造函数

如何删除子类中的继承函数?

如何在Codeigniter中将父类构造函数访问子类

如何实现子类的构造函数?

如何覆盖子类中的抽象类构造函数

如何从子类访问属性 [field] 并在子类的构造函数中创建它?

如何在C ++类中存储Embind'val'-错误:调用已删除的构造函数

反应如何在componentWillUnmount中正确删除列表器,为什么在构造函数中需要绑定?

如何在构造函数中填写数组

如何在构造函数中添加方法?

如何在构造函数中调度更改?

如何在构造函数中调用方法?

如何在假设中应用构造函数?

如何在父类的函数中调用子类的函数

如何在构造函数的重载函数中使用子类的字段值

从超类的构造函数中调用子类的构造函数

我的子类构造函数中的构造函数错误

如何在构造函数中构造对象并分配引用?