copy-constructor相关内容

C ++对象组合,依赖注入和复制构造函数

我想用C ++设计一个称为Entity的类。该实体具有一个指向Vector3D成员的指针,该成员是该实体在3D空间中的位置。构造函数允许将Vector3D类型的指针传递给构造函数,从而可以在类外部实例化Vector3D实例。 因为存在指向动态对象的指针。分配对象时,必须重载复制构造函数和赋值运算符以深复制向量。但是,由于向量可以在构造函数中传递,因此它也可以在其他地方使用,因此不能在析构函数 ..
发布时间:2020-10-07 02:07:01 C/C++开发

使用反射复制构造函数

我有一个包含100个字段的基类和一个包含2个更多字段的派生类。我想通过调用基类中的getter使Derived类中的所有100个字段都可访问,因此这就是为什么我使用继承而不是合成的原因。在Derived中,我想有一个构造函数,该构造函数会初始化Base中的所有内容: class Base { ... // 100个字段。 } 类派生扩展了Base { ... //还有2个字段。 ..
发布时间:2020-10-02 22:42:48 Java开发

副本构造函数创建依赖副本

我实现了副本构造器,如此处所述。但是问题仍然是,当我更新 route_copy 时,相同的更新将应用于 route 。因此,我不明白我的代码有什么问题? 公共类Route实现Comparable { private List网站; public Route() { sites = new ArrayList(); } 公共路线 ..
发布时间:2020-10-02 22:27:50 Java开发

检查“自我分配”。在复制构造函数中?

今天在大学里,一位教授推荐我在复制构造函数中检查(this!=& copy) operator = 重载时显示。但是我提出了疑问,因为我无法想到在构造对象时 this 永远等于参数的任何情况。 他承认我说的很对。因此,我的问题是,执行此检查是否有意义,还是不可能将其搞砸? 编辑:我想我是对的,但是我会暂时打开它。也许有人想出一些疯狂的神秘C ++魔术。 Edit2 :测试a(a) ..
发布时间:2020-10-02 00:14:07 C/C++开发

复制一个对象并使两者共享一个成员变量(C ++)

我一直在思考和搜索,但是我无法解决此问题。 我想要一个对象,当该对象复制到另一个对象中时,两个对象共享某些成员变量。因此,当我更改object1的成员变量的值时,它也更改了object2中的变量。示例: 类ABC { public: int a = 5; // ... } int main(){ ABC object1; ABC object2 = object ..
发布时间:2020-10-02 00:04:05 C/C++开发

删除vs空副本构造函数

空和删除副本构造函数的示例: class A { public: //空副本构造函数 A(const A&){} } B类 { public: //删除副本构造函数 A(const A&)= delete; } 他们在实践中是否也这样做(禁止复制对象)?为什么删除比 {} 好? 解决方案 他们在实践中是否这样做(禁用对象复制) ..
发布时间:2020-09-28 00:40:44 C/C++开发

从复制构造函数调用构造函数

在c ++ 11中,我们可以从另一个构造函数调用一个构造函数。因此,除了定义副本构造函数外,我们还可以每次调用该构造函数吗?就像这段代码一样: class MyString { private: char * ptr; int m_length; public: MyString(const char * parm = nullptr):m_length(0),ptr(n ..
发布时间:2020-09-27 19:59:53 C/C++开发

为什么无需将具有删除的副本构造函数的类型的移动构造函数标记为已删除?

考虑 std :: mutex 。我知道为什么 std :: mutex 不能移动。但是它的副本构造函数显然标记为已删除,但是我还没有看到它的move构造函数这样的声明。那么cppreference为什么说 std :: mutex 不能移动? 根据文档( https://en.cppreference.com/w/cpp/language/move_constructor )有许多无法满足 ..
发布时间:2020-09-27 19:55:59 C/C++开发

POD类型的填充字节是否被复制?

假设我的POD类型如下: 结构A { char a; int b; }; 在我的系统上, sizeof(A)== 8 ,即使 sizeof(char)== 1 和 sizeof(b)== 4 。这意味着数据结构有3个未使用的字节。 现在假设我们这样做了 A x = ...; A y = x; 问题: 是否保证 ..
发布时间:2020-09-27 07:45:10 C/C++开发

复制初始化的奇怪行为,不会调用复制构造函数!

我正在阅读直接初始化和复制初始化之间的区别(第8.5 / 12节): T x(一种); //直接初始化 T y = a; //复制初始化 我从阅读复制初始化中的差异在于它需要可访问的&非明确的复制构造器,否则程序将无法编译。我通过编写以下代码进行了验证: 结构A { int i; A(int i):i(i){std :: cout ..

SFINAE离开了副本构造函数

在某些情况下,我想SFINAE删除类模板的复制构造函数和复制赋值运算符。但是,如果这样做,则会生成默认的复制构造函数和默认的赋值运算符。 SFINAE是基于我作为类模板参数传递的标签完成的。问题是SFINAE仅适用于模板,而复制构造函数/赋值运算符不能用作模板。是否存在解决方法? 解决方案 此解决方案使用有条件不可复制的基类(通过显式标记复制构造函数和 template ..

为什么在这里调用Copy Constructor而不是普通的Constructor和重载的赋值运算符?

可能重复: 复制构造函数和赋值运算符 我有一个C类,其中重载了Normal,复制构造函数和赋值运算符,以打印出所调用内容的痕迹。 我编写了以下代码来测试什么时候被调用? C c1; ->普通构造函数.. //了解罚款 C c2; c2 = c1; ->普通的构造函数+赋值运算符.. //理解为罚款 C * c3 = new C(C1)->复制构造函数//理 ..
发布时间:2020-09-27 02:56:45 C/C++开发