问题标签 [default-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.

0 投票
1 回答
298 浏览

c++ - 浅拷贝是否共享指针?(C++)

我知道如果我这样做:

那么Obj1's 和Obj2'snine将指向同一个 s 8,但它们会共享同一个指针吗?IE:

将指向Obj2还是将 一直 指向?nineNecronine8

0 投票
5 回答
41683 浏览

c++ - 包含其他对象的类的 C++ 隐式复制构造函数

我知道如果您自己不实现,编译器有时会提供默认的复制构造函数。我对这个构造函数到底做了什么感到困惑。如果我有一个包含其他对象的类,这些对象都没有声明的复制构造函数,那么行为会是什么?例如,像这样的一个类:

现在,如果我这样做:

默认的复制构造函数会做什么?编译器生成的复制构造函数 in 会Foo调用编译器生成的构造函数 inBar进行复制bar,然后将调用编译器生成的复制构造函数 inBaz吗?

0 投票
5 回答
258 浏览

c++ - 选择退出复制构造函数

这可能是一个愚蠢的问题,但是...

我一直在编写许多使用不可复制成员的类。这些类永远不会通过我的源代码中的复制构造函数进行初始化。当我尝试在不提供自己的复制构造函数的情况下进行编译时,由于不可复制的成员对象,g++ 会抛出许多关于它如何无法构建默认复制构造函数的错误。

有没有办法告诉编译器不要给我一个复制构造函数?

编辑: 是的......感觉很傻......我有一个案例,我在 boost::bind 调用中偶然调用了复制构造函数。学过的知识。

0 投票
3 回答
24538 浏览

java - Java 对象复制的最佳选择?

可能重复:
如何在 Java 中复制对象?

我需要在 Java 中复制一个对象(即“按值而不是按引用”复制对象,以便新对象不仅仅是对旧对象的引用)。我厌倦了实现可克隆并且更喜欢使用复制构造函数。但是,我需要复制的类有许多需要复制的成员变量(超过 100 个),因此向该类添加一个新的构造函数只是为了复制(仅在我的应用程序的一部分中需要)似乎是一个糟糕的解决方案由于其巨大的长度。

有更好的解决方案吗?我应该只使用克隆()吗?我可以创建一个复制构造函数,但不是将所有字段一一复制,我可以反思吗?谢谢。

我基本上只需要创建一个与旧对象相同的新对象,但更改了一些(大约 100 个中的 10 个)字段(但我仍然需要两个对象..所以新对象不能作为对旧的)。我愿意接受任何建议。

0 投票
3 回答
351 浏览

c++ - MSVC9.0的bug还是对虚拟继承的误解和朋友?

考虑以下代码:

MSVC9.0(Visual Studio 2008 的 C++ 编译器)确实生成了默认构造函数,但无法为 C 生成复制和赋值运算符,尽管 C 是 A 的朋友。这是预期的行为还是 Microsoft 的错误?我认为是后者,如果我是对的,任何人都可以指出一篇文章/论坛/...讨论这个问题或微软对这个错误做出反应的地方。先感谢您。

PS顺便说一句,如果将两个私有继承都更改为受保护,则一切正常

PPS 我需要一个证明,上面的代码是合法的还是非法的。据我了解,确实打算不能派生具有虚拟私有基础的类。但他们似乎错过了朋友部分。所以......就这样,我的第一个赏金:)

0 投票
2 回答
693 浏览

c++ - C++ 中隐式定义的复制构造函数是否也为成员调用了复制构造函数?

只想仔细检查 C++ 类的默认(由编译器隐式定义)复制构造函数是否对每个成员变量执行复制构造函数,以及使用旧值来获取每个成员的复制值,而原子对象只使用位复制(例如整数和浮点数)

0 投票
2 回答
136 浏览

c++ - 初始化引用时避免按值复制

我有一个函数接口:

这个想法是像这样检索它:

但是,我偶尔会犯错误并写道:

按值复制,这​​是我想要避免的。但是,当我犯这样的错误时,编译器不会发出警告,因为它的语法是合法的。我想为此触发编译时错误,请问我的替代方案是什么?

我考虑过声明一个复制构造函数但没有在任何地方定义它,如果使用它会导致链接时错误,但是我将无法在任何情况下使用复制构造函数,这是不可取的

0 投票
5 回答
6479 浏览

c++ - 存在引用时的赋值运算符和复制构造函数

我只是在使用以下代码试验参考:

我期待两者都会B b1 = b;产生错误。相反,当我使用 VS2008 编译时,我只会收到警告

警告 C4512:“B”:无法生成赋值运算符

我明白为什么我会收到此警告。但是编译器不应该也为语句生成错误B b1 = b;吗?就像它生成了复制构造函数但没有生成赋值运算符。这两者不是天生就相互联系的吗?当无法生成另一个时,只为其中一个生成默认实现是否有意义?

0 投票
2 回答
1888 浏览

c# - C# 实例复制/传递对象引用与 Java 不同?

...

说..你做

现在,当您尝试修改其他人的位置时,就会出现错误/问题。两个玩家的位置变化完全相同,因为他们现在共享相同的位置。

所以当然,下面的这个就可以了。

但问题是它总是创建一个新对象..当我可以更新现有实例时..?如何在默认情况下更新现有实例,而不像下面那样创建自己的方法来解决此问题。

我必须使用下面的方法来解决这个问题(默认情况下任何方式都可以做到这一点,而不是像下面这样)

有人知道我可能不知道的任何技巧吗?谢谢。

0 投票
4 回答
2684 浏览

c++ - 关于包含不可复制成员引用的类的复制构造函数的建议

我有一个 A 类,它作为成员引用了 B 类的对象。B 类的复制构造函数(和赋值运算符)是私有的。你认为使用 A 的默认复制构造函数是一个有效且好主意吗?(我实际上想要一个功能,我可以在某种 STL 容器中存储大量 A 类型的对象,这需要分配能力和复制能力。)

到目前为止,据我所知,对上述方法的反对意见如下,但我的设计并未面对它。我想知道上述示例是否还有其他问题/问题/疑虑...

  1. 只有引用被复制,因此当类型 B 的原始对象 b 被销毁时会出现问题。(不适用,因为 b 在整个范围内都可用。)
  2. b_ 对于 A 的每个实例都是唯一的吗?(不,B 实际上只在作用域中实例化一次,因此它具有单例类的效果。)

如果还有其他问题,请在此处列出。我不热衷于明确定义的复制构造函数,但我对此持开放态度。