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

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

面向对象编程的思想在通用、中级、大小写敏感、与平台无关的计算机语言C++中得到支持。Bjarne Stroustrup于1979年在贝尔实验室开发了C++编程语言。由于C++是一种平台无关的编程语言,它可以在包括Windows、Mac OS和不同的UNIX版本在内的各种操作系统上使用。

赋值运算符用于将值赋给前述的各种变量。

在讲解复制构造函数之前,让我们先学习一些构造函数的知识。当一个对象被创建时,会自动调用一个特定的方法,这个方法被称为构造函数,它与类名相同并带有圆括号“()”。通过构造函数来对新生成的对象的变量进行初始化。

复制构造函数是一种构造函数的形式,它使用来自同一类的已创建对象来初始化新对象。

现在让我们详细了解赋值运算符和复制构造函数的概念,并比较它们的特点。

描述赋值运算符

赋值运算符用于给变量赋值。赋值运算符的左操作数是一个变量名,右操作数是给该变量赋值的值。如果两个操作数的数据类型不匹配,将触发编译错误。

赋值运算符有多种形式。

: = 运算符只给变量赋值。例如,如果”a=10″,变量”a”将被赋值为10。

+= 运算符在赋予新值之前,首先将变量当前的值乘以右侧的值。

-= 运算符在附加新值之前,首先从变量当前的值中减去右侧的值。

*= 运算符首先将变量当前的值乘以右侧的值,以便赋予一个新的值给变量。

/= 运算符首先将变量当前的值除以右侧的值,然后将新的值赋给变量。

赋值运算符示例

以下是赋值运算符的一个示例。在这个示例中,赋值运算符被用来给多个变量赋值。

#include <iostream>
int main() {
   // Write C++ code here

   int a=5,b;
   b=a;
   std::cout << "The value of a is "<<a<<"\n";
   std::cout << "The value of b is "<<b;
   return 0;
}

输出:

在上面的示例中,使用了两个变量“a”和“b”,我们首先使用赋值运算符“=”将“a”的值设置为5。然后,我们将变量b赋予了变量a的值。以上述代码为例,输出结果如下所示。

The value of a is 5.
The value of b is 5.

什么是拷贝构造函数

程序员经常需要这样做,以便在不影响原始对象的情况下复制一个对象。在这种情况下使用拷贝构造函数。拷贝构造函数通过使用已经构造的同类对象来初始化一个对象。拷贝构造函数有两种变体。

当未声明拷贝构造函数时,C++编译器会创建默认的拷贝构造函数,并且它将所有成员变量按照原样进行拷贝。

用户定义的拷贝构造函数:这个术语指的是由用户定义的拷贝构造函数。

语法:

拷贝构造函数的语法为 –

Class_Name(Class_name & oldobject)
{
   // Body of constructor
}

赋值运算符和拷贝构造函数的比较

所有这些C++概念的主要功能都是分配值,但它们之间的关键区别在于,拷贝构造函数产生一个新对象并赋值,而赋值运算符将值分配给同一对象的数据成员,而不是新对象。

赋值运算符和拷贝构造函数之间的关键区别如下表所示。

复制构造函数 赋值运算符
重载构造函数的一个示例就是复制构造函数。 使用复制构造函数将现有对象的相同类型初始化一个新对象。 将值赋给对象或数据成员的运算符被称为赋值运算符。 它将一个对象的值从一个产生的对象转移到另一个对象。
当一个旧对象用于初始化一个新对象,以及当对象作为非引用参数提供给函数时,将调用复制构造函数。 当一个旧对象的值被传输到一个新对象时,使用赋值运算符。
新调用的对象将与先前生成的对象共享不同的内存地址。 第一个对象和第二个对象,第一个对象的值赋给第二个对象,共享相同的内存地址。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程