问题标签 [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++ - C++:复制构造函数:使用getter或直接访问成员变量?
我有一个带有复制构造函数的简单容器类。
您建议使用 getter 和 setter,还是直接访问成员变量?
- 在示例中,所有代码都是内联的,但在我们的实际代码中没有内联代码。
更新(2009 年 9 月 29 日):
其中一些答案写得很好,但他们似乎错过了这个问题的重点:
这是一个简单的人为示例,用于讨论使用 getter/setter 与变量
初始化列表或私有验证器函数并不是这个问题的一部分。我想知道这两种设计是否会使代码更易于维护和扩展。
在这个例子中,一些人专注于字符串,但这只是一个例子,想象它是一个不同的对象。
我不关心性能。我们不是在 PDP-11 上编程
c++ - 链表和复制构造函数
我正在尝试用 C++ 编写一个基本的单链表类。几年前我在我的数据结构课上做过,但我不记得细节了。
我的 Node 类应该有一个复制构造函数吗?它有一个 Node* 作为成员变量,据我所知,您总是应该为具有动态成员的类编写复制构造函数、析构函数和赋值运算符。但是从我在网上看到的情况来看,List 类负责节点的复制。真的是这样吗?如果是这样,为什么?
c++ - 在这个函数中使用引用参数有什么好处吗?
我定义了以下类:
成员 AddMove 定义如下:
我注意到没有这个函数的引用参数,复制构造函数被调用了两次,而有一个引用参数它只被调用了一次。只调用一次复制构造函数而不是两次是使用引用参数的好理由吗?
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 中有没有更好的方法?
输出:
替代复制构造函数:
c++ - 在 C++ 中初始化一个数组
我正在尝试初始化一个对象数组:
但是当我尝试这样做时,它会一直尝试调用我的复制构造函数而不是重载的构造函数。有什么想法可以解决这个问题吗?
有问题的2个构造函数是:
我需要其他东西的复制构造函数,所以我不能删除它。
谢谢你的帮助!
c++ - 使用公共赋值运算符进行私有复制 ctor 时出错
你们中的一个人能解释一下为什么下面的代码不能编译吗?
我收到的错误:
注意:当我删除private:关键字时,代码会编译,但永远不会调用复制 ctor。那么为什么它在私有时会出错呢?
不确定它是否重要,但我正在使用:
c++ - 仅对 C++ 中的空私有构造函数使用声明是否正确?
例如这是正确的:
或者您应该提供定义:
? 感谢您提供当前的答案。让我们扩展这个问题 - 编译器是否会在其中一个示例中生成更好的代码?我可以想象为 ctor 提供正文会强制编译器在编译单元中包含一些(空)代码?自动生成的代码也是如此吗?
c++ - C ++中的复制构造函数和=运算符重载:通用函数可能吗?
由于复制构造函数
和 = 运算符重载
具有几乎相同的代码,相同的参数,并且仅在返回上有所不同,是否可以有一个共同的功能供他们使用?
c++ - C++类继承问题
嗨,我有两个类,一个叫做指令,一个叫做 LDI,它继承自指令类。
然后我创建了一个指令类型的指针并尝试指向一个新的 LDI 类型的实例。
我收到以下编译器错误。任何想法我做错了什么?
c++ - 二叉树C++的复制构造函数
我有一个具有以下定义的 Tree 类:
TreeNode 表示一个节点,有数据,leftPtr 和 rightPtr。
如何使用复制构造函数创建树对象的副本?我想做类似的事情:
任何帮助表示赞赏!