问题标签 [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 投票
2 回答
3547 浏览

c - 有没有复制 Gtk 小部件的好方法?

有没有办法使用 C 中的 Gtk 库来克隆 Gtk 按钮(例如),并将其打包到应用程序的其他位置。我知道你不能两次打包同一个小部件。并且这段代码显然不起作用,但显示了当我尝试按钮的浅拷贝时会发生什么:

周围的代码创建了一个 vbox 并将其打包在一个窗口中并运行 gtk_main()。这将导致这些难以理解的错误消息:

同样,如果我要编写自己的 GObject(不一定是 Gtk 小部件),是否有编写复制构造函数的好方法。我认为它应该是一个带有可选钩子的接口,并且主要基于属性,以某种方式处理类的层次结构。

我想这样做:

如果 GtkButton 可以使用理论上的可复制接口。

0 投票
2 回答
482 浏览

c++ - 我可以将指针传递给超类,但创建子类的副本吗?

我有一个函数,它接受一个指向超类的指针并对其执行操作。但是,在某些时候,该函数必须对输入的对象进行深层复制。有什么办法可以进行这样的复制吗?

我想到将函数设为模板函数并简单地让用户传递类型,但我希望 C++ 提供更优雅的解决方案。

0 投票
2 回答
720 浏览

c# - 可以使用反射来实例化对象基类属性吗?

像这样:

这个例子有点简单(它来自 Jira API - RemoteStatus 有 4 个属性),但想象一下基类有 30 个属性。我不想手动设置所有这些值,特别是如果我继承的类只有几个额外的属性。

反思似乎暗示了一个答案。

我在使用构造函数中的继承 (publix X () : y)看到我可以调用基类构造函数(我认为?如果我错了请纠正我),但我的基类没有构造函数 - 它派生自jira wsdl


编辑 我可以想象 2 个有效的解决方案:上面概述的一个,以及某种类似的关键字this.baseClasstype(baseclass)并且被这样操作,充当一种指向this. 所以,this.baseClass.name = "Johnny"将是完全相同的事情this.name = "Johnny"

出于所有意图和目的,我们假设基类有一个复制构造函数——也就是说,这是有效的代码:


编辑2 这个问题更像是一个思考练习而不是一个实际问题——为了我的目的,我可以很容易地做到这一点:(假设我的“基类”可以复制)

0 投票
3 回答
489 浏览

c++ - C++ auto_ptr 和复制构造

如果我有课

如何为 C 定义复制构造函数:

它不可能是

因为我想如果我从其他人那里复制 auto_ptr,我已经通过删除所有权更改了其他人。将复制构造函数定义为是否合法

0 投票
7 回答
50029 浏览

c++ - 为什么复制赋值运算符必须返回引用/常量引用?

在 C++ 中,我不清楚从复制赋值运算符返回引用的概念。为什么复制赋值运算符不能返回新对象的副本?另外,如果我有 class A,以及以下内容:

operator=定义如下:

0 投票
5 回答
2887 浏览

c++ - 防止复制构造和分配返回值引用

如果我有一个函数返回对我无法控制其源的类实例的引用,请说list<int>

我想确保它的值分配给另一个引用,例如:

如果用户改为:

我希望它是一个编译时错误,因为用户只会操作列表的副本而不是原始列表(这绝不是我的应用程序想要/想要的)。

有什么方法可以防止上面的复制构造和赋值(比如通过某种“包装器”类)?

理想情况下,如果要使用某个包装类,比如说wrapper<T>,我希望它适用于任何类型的对象T


是的,我知道对于我可以控制的类我可以简单地使复制构造函数和赋值运算符private像:

禁止复制构建和转让;但是,如上所示,我想这样做,例如,std::list我不能简单地制作复制构造函数和赋值运算符private

0 投票
4 回答
413 浏览

c++ - g++中是否存在这样的优化?

考虑以下代码片段:

这将是什么行为?将这段代码:

  1. 从method()返回值优化返回的someClass实例的引用,然后对引用执行someClass的复制构造函数?

  2. 避免以某种方式调用复制构造函数?

具体来说,我有返回非常大的列表的方法,我想避免在每个返回值上调用复制构造函数。

编辑:Erm,对不起,代码现在编译......

0 投票
7 回答
74124 浏览

c++ - 我们什么时候必须使用复制构造函数?

我知道 C++ 编译器为一个类创建了一个复制构造函数。在这种情况下,我们必须编写用户定义的复制构造函数吗?你能举一些例子吗?

0 投票
5 回答
423666 浏览

c++ - 什么是复制和交换成语?

这个成语是什么,应该在什么时候使用?它解决了哪些问题?使用 C++11 时习语会发生变化吗?

尽管在很多地方都提到过,但我们没有任何单一的“它是什么”问题和答案,所以在这里。以下是之前提到的地方的部分列表:

0 投票
5 回答
8355 浏览

c++ - C++ 复制构造函数有什么大惊小怪的?

可能重复:
我们什么时候必须使用复制构造函数?

为什么 C++ 复制构造函数如此重要?我刚刚了解了他们,我不太明白他们有什么大惊小怪的。如果您使用指针,似乎您应该始终为您的类编写一个复制构造函数,但为什么呢?

谢谢,博达赛多。