问题标签 [copy-constructor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 复制构造函数问题
我尝试使用复制构造函数 using 语句:
但是没有调用复制构造函数。我正在使用 g++ 4.1.0。我在类中设置了 X(const X&) 和 X(x&) 构造函数。
这应该有效还是我在代码中做了一些非常基本的问题?
我的课程代码是
当我使用
A a = A();
or A a = A(100);
时,它不起作用,但是当我使用它时A a(b);
,A a = b;
它可以正常工作。
我错过了什么?我看到根据维基百科,它应该可以工作,但在我的情况下它不起作用:(。
提前感谢您的所有回答和评论。
c++ - 这个复制构造函数有什么问题?
我一直在尝试为一棵树提出一个复制构造函数。我找到了很多建议。
这个让我很感兴趣。
是什么if (TreeNode* tmp = new TreeNode)
意思?
除此之外,它看起来还不错。它只是不能很好地工作。
知道有什么问题吗?
上面的例子来自这个网站。
c++ - C++:关于复制构造函数的问题
我有一个this
用来初始化void*
指针的类。但问题是,当我通过value传递该类的实例时,指针不会更改为堆栈上的新地址。所以,我想重写复制构造函数以重新分配具有新地址的指针this
。但是我需要变量来调用超类构造函数,我通常通过构造函数参数获得,但我的复制构造函数中没有它们......
希望我解释清楚...
所以问题是:我可以保留默认复制构造函数的过程,在其中添加重新分配指针的部分吗?还是有更好的选择?
谢谢
这是一些代码:
别的地方:
linq - 在 linq 分组上克隆对象 - 复制构造函数替代
我有我想与 LINQ 分组的自定义对象(资产)的集合。自定义对象具有标准属性,如 id、name 和 cost 属性。分组时我想计算每个组的成本,所以我使用了这样的小技巧:
好的,这里一切都很好。但是...为了也初始化订单属性,我同时使用复制构造函数和成本计算...
所以现在,我通过 id 获取分组资产的集合,所有属性都从组中的第一个资产复制,并计算出分组成本。但是......为了做到这一点,我需要为使用这种分组的每个对象编写一个具有“所有属性初始化”的复制构造函数,在我的情况下这是开销,因为有具有 20 多个属性的对象。
我尝试使用链接中的克隆技巧:
在 linq 组查询中但没有成功。
我的问题:有没有更好/更优雅的方式来实现这一点?
谢谢
c++ - 请求从“std::string”转换为非标量类型
我在实施我的课程时遇到了麻烦。它应该能够从 std::string 初始化。所以我写了一个副本(?)构造函数:
我正在尝试制作一个 CVariable 对象:
我收到以下错误:
如何解决?
我正在寻找完全允许以下内容的解决方案:
编辑:添加(几乎)完整的源代码:
变量.h
变量.cpp
主文件
编辑:添加枚举 VARPARAM
编辑:好的,上面解决了,现在我有了这个:
c++ - 为什么复制构造函数会有多个参数?
$12.8/2 - '如果类 X 的第一个参数的类型为 X&、const X&、volatile X& 或 const volatile X&,并且没有其他参数或所有其他参数都具有默认值,则类 X 的非模板构造函数是复制构造函数论据(8.3.6).106)'
到目前为止,我还没有遇到任何需要声明带有附加默认参数的复制构造函数的示例。
想知道任何实时使用这种带有多个参数的复制构造函数。
c++ - 根据 operator= 实现复制构造函数
如果operator=
正确定义,可以使用以下作为复制构造函数吗?
c++ - 为什么不调用复制构造函数?
在第一种情况下,当MyClass(1, 2)
调用用户定义的构造函数并返回一个对象时,我期望MyObj
调用复制构造函数。为什么不需要为 的第二个实例调用复制构造函数MyClass
?
c++ - 数据模型,循环引用
我有以下用于存储经络和纬线的数据结构。
每个制图点存储:
A] 地理和空间坐标、制图变形等。
B] 指向北/南/东/西节点的指针。
它允许存储点之间的关系,首先是它们与经线/平行线的关系...
经线的数据结构存储经线的经度、经线的起点和终点以及点数。
所有点都存储在节点列表中:
但是为 Node2DList 编写复制构造函数存在一个大问题。Meridian/Parallel 和 Node2Dlist 之间存在循环依赖关系。
复制构造函数使用std::map
并用新的点和链接替换旧点和链接,这不是实现问题...但是从类 Meridian 开始/结束的指针指向旧 Node2DList 的点... Node2DList 复制构造函数应该通知所有指向旧的经络Node2DList 点并将所有指针更改为新的 Node2DList 点。这个模型不允许。
可能的解决方案是添加两个指向子午线和平行点所属的指针:
恐怕这个提议的模型不好。两个班级之间仍然有自行车参考......有人可以帮我改进它吗?谢谢...
java - 在 C++ 中实现异常类
因此,我尝试基于 Java Exception 类为 C++ 编写一个简单的基 Exception 类。我确信那里已经有很棒的库,但我这样做是为了练习,而不是生产代码,我很好奇并且一直想学习。Java 的异常所做的其中一件事,我也想实现,是“原因”的概念。在 Java 中,带有原因的新异常如下所示:
但是,在 C++ 中,将异常作为参数传递给构造函数是调用复制构造函数的方式。因此,复制异常和创建一个有原因的新异常之间存在概念上的脱节。显然,这在 Java 中不是问题。
我想我只是想知道处理这个问题的最佳方法是什么。我的一些想法是:
- 用虚拟变量进行微分
- 只需创建新异常,并调用 setCause() 方法
- 像复制构造函数 is
Exception(Exception &)
和带有原因的构造函数是Exception(Exception *)
谢谢