当前位置: 首页 > 编程笔记 >

C ++中的复制构造函数和赋值运算符之间的区别

桑宇
2023-03-14
本文向大家介绍C ++中的复制构造函数和赋值运算符之间的区别,包括了C ++中的复制构造函数和赋值运算符之间的区别的使用技巧和注意事项,需要的朋友参考一下

在本文中,我们将了解C ++中的复制构造函数和赋值运算符之间的区别。

复制构造函数

  • 它是一个重载的构造函数。

  • 它将使用已经存在的对象数据/值初始化新对象。

  • 在一些现有对象的帮助下创建新对象时使用它。

  • 这两个对象将存储在单独的存储位置中。

  • 如果在类内部未定义副本构造函数,则编译器将自行提供一个副本构造函数。

赋值运算符

  • 它是一个运算符。

  • 它将一个对象的值分配给另一个对象,而这两个对象都已经存在。

  • 在需要将现有对象分配给新对象时使用。

  • 仅使用一个内存位置来存储该对象。

  • 但是,有多个参考变量用于指向该对象的位置。

  • 如果此运算符未重载,则将创建按位副本。

 类似资料:
  • 本文向大家介绍详解C++中对构造函数和赋值运算符的复制和移动操作,包括了详解C++中对构造函数和赋值运算符的复制和移动操作的使用技巧和注意事项,需要的朋友参考一下 复制构造函数和复制赋值运算符 从 C++ 11 中开始,该语言支持两种类型的分配:复制赋值和移动赋值。 在本文中,“赋值”意味着复制赋值,除非有其他显式声明。 赋值操作和初始化操作都会导致对象被复制。 赋值:在将一个对象的值赋给另一个对

  • 问题内容: 在自变量中有一个默认值分配,并且仅被赋值一次,因此三个输出分别为1、2和3。为什么不做类似的事情? 结论: 为了使我所学的内容更容易为该线程的未来读者所用,我总结如下: 我在这个主题上找到了这个不错的教程。 我制作了一些简单的示例程序来比较 变异 , 重新绑定 , 复制值 和 赋值运算符 之间的区别。 问题答案: 当你宣布你的功能,默认参数得到评估 的那一刻 。每次调用该函数时都不会刷

  • 问题内容: 其实我不明白,无参数构造函数和默认构造函数有什么区别。 创建名为cFrame的Test对象时,这是否调用此类的默认构造函数? 问题答案: 该构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含对(not )的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。 JLS-8.8.9。默认构造函数说(部分), 如果一个类不包含构造函数声明,则隐式声明一个没有

  • 问题内容: 要从Java 类中创建新对象,通常使用以下语句 我读过new运算符通过在堆中分配内存空间来创建新对象,但是我也读到调用构造函数会创建它。因此,这有点令人困惑。哪一个在创建对象?是 新 运算符还是默认构造函数? 问题答案: 具有与类同名的方法是合法的(尽管令人困惑),消除了任何歧义。指示JVM应该为给定的类和参数列表调用实例初始化方法,并返回已初始化的对象(在初始化方法的第一个(隐藏)参

  • 问题内容: 如果移位的数字为正,>>>和>>的工作原理相同。 如果移位数为负,>>>将最高有效位填充为1,而>>操作将MSB填充为0。 我的理解正确吗? 如果负数是在MSB设置为1的情况下存储的,而不是Java使用2s补码的方式,则运算符的行为将完全不同,对吗? 问题答案: 表示负数的方式称为2的补码。为了演示其工作原理,以-12为例。12的二进制值为00001100(假设整数为8位,尽管实际上它

  • 问题内容: 我一直在做大学项目的作业。有一次,当您实际上可以使用构造函数方法来实现相同的结果时,我对于getter和setter的实际使用感到困惑。我已经搜索并找到许多答案,但没有令人满意的解释。我有如下laptop.java 和laoptopRecords.java调用构造函数为 在这里,我没有使用getter和setter方法,并且为每个便携式计算机对象都获得了理想的结果。 如果我以如下方式在