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

c++ - C++:复制构造函数:使用getter或直接访问成员变量?

我有一个带有复制构造函数的简单容器类。

您建议使用 getter 和 setter,还是直接访问成员变量?

  • 在示例中,所有代码都是内联的,但在我们的实际代码中没有内联代码。

更新(2009 年 9 月 29 日):

其中一些答案写得很好,但他们似乎错过了这个问题的重点:

  • 这是一个简单的人为示例,用于讨论使用 getter/setter 与变量

  • 初始化列表或私有验证器函数并不是这个问题的一部分。我想知道这两种设计是否会使代码更易于维护和扩展。

  • 在这个例子中,一些人专注于字符串,但这只是一个例子,想象它是一个不同的对象。

  • 我不关心性能。我们不是在 PDP-11 上编程

0 投票
3 回答
2415 浏览

c++ - 链表和复制构造函数

我正在尝试用 C++ 编写一个基本的单链表类。几年前我在我的数据结构课上做过,但我不记得细节了。

我的 Node 类应该有一个复制构造函数吗?它有一个 Node* 作为成员变量,据我所知,您总是应该为具有动态成员的类编写复制构造函数、析构函数和赋值运算符。但是从我在网上看到的情况来看,List 类负责节点的复制。真的是这样吗?如果是这样,为什么?

0 投票
3 回答
195 浏览

c++ - 在这个函数中使用引用参数有什么好处吗?

我定义了以下类:

成员 AddMove 定义如下:

我注意到没有这个函数的引用参数,复制构造函数被调用了两次,而有一个引用参数它只被调用了一次。只调用一次复制构造函数而不是两次是使用引用参数的好理由吗?

0 投票
6 回答
5243 浏览

c++ - 从复制构造函数调用默认赋值运算符是不好的形式吗?

考虑需要复制的一类。副本中的绝大多数数据元素必须严格反映原始数据,但只有少数元素的状态不需要保留,需要重新初始化

从复制构造函数调用默认赋值运算符是不好的形式吗?

默认赋值运算符将与普通旧数据(int、double、char、short)以及用户定义的每个赋值运算符的类一起表现良好。指针需要单独处理。

一个缺点是,由于没有执行额外的重新初始化,这种方法使赋值运算符失效。也不可能禁用赋值运算符,从而打开用户使用不完整的默认赋值运算符创建损坏类的选项A obj1,obj2; obj2=obj1; /* Could result is an incorrectly initialized obj2 */

a(orig.a),b(orig.b)...放宽 to除了a(0),b(0) ...必须写的要求会很好。需要将所有的初始化编写两次,这会为错误创建两个位置,如果要将新变量(例如double x,y,z)添加到类中,则需要在至少 2 个位置而不是 1 个位置正确添加初始化代码。

有没有更好的办法?

在 C++0x 中有没有更好的方法?

输出:

替代复制构造函数:

0 投票
5 回答
654 浏览

c++ - 在 C++ 中初始化一个数组

我正在尝试初始化一个对象数组:

但是当我尝试这样做时,它会一直尝试调用我的复制构造函数而不是重载的构造函数。有什么想法可以解决这个问题吗?

有问题的2个构造函数是:

我需要其他东西的复制构造函数,所以我不能删除它。

谢谢你的帮助!

0 投票
6 回答
1236 浏览

c++ - 使用公共赋值运算符进行私有复制 ctor 时出错

你们中的一个人能解释一下为什么下面的代码不能编译吗?

我收到的错误:

注意:当我删除private:关键字时,代码会编译,但永远不会调用复制 ctor。那么为什么它在私有时会出错呢?

不确定它是否重要,但我正在使用:

0 投票
8 回答
1688 浏览

c++ - 仅对 C++ 中的空私有构造函数使用声明是否正确?

例如这是正确的:

或者您应该提供定义:

? 感谢您提供当前的答案。让我们扩展这个问题 - 编译器是否会在其中一个示例中生成更好的代码?我可以想象为 ctor 提供正文会强制编译器在编译单元中包含一些(空)代码?自动生成的代码也是如此吗?

0 投票
3 回答
88364 浏览

c++ - C ++中的复制构造函数和=运算符重载:通用函数可能吗?

由于复制构造函数

和 = 运算符重载

具有几乎相同的代码,相同的参数,并且仅在返回上有所不同,是否可以有一个共同的功能供他们使用?

0 投票
4 回答
319 浏览

c++ - C++类继承问题

嗨,我有两个类,一个叫做指令,一个叫做 LDI,它继承自指令类。

然后我创建了一个指令类型的指针并尝试指向一个新的 LDI 类型的实例。

我收到以下编译器错误。任何想法我做错了什么?

0 投票
6 回答
20451 浏览

c++ - 二叉树C++的复制构造函数

我有一个具有以下定义的 Tree 类:

TreeNode 表示一个节点,有数据,leftPtr 和 rightPtr。

如何使用复制构造函数创建树对象的副本?我想做类似的事情:

任何帮助表示赞赏!