0


C++类对象的赋值操作

学习C语言结构体的时候,结构体定义的变量可以相互赋值,有如下的测试例子:

   程序的运行结果如下:

   可以看到,我们定义了一个struct student结构体类型,然后,定义stud变量和stud1变量。并且把 stud变量赋值给stud1变量,操作如下:

stud1 = stud;

   此时,是把stud变量中的成员变量,一一对应设置给stud1对象,相当于:

stud1.name = stud.name;

stud1.addr = stud.addr;

stud1.number = stud.number;

   所以,使用stud变量的数据,给stud1变量赋值。

   那么,如果是C++类对象的赋值,会是怎么样的操作?

   类对象之间的赋值也可以通过赋值运算符“=”进行。对象赋值的一般形式为:

*对象名*1 = 对象名2**

   注意,对象名1和对象名2必须属于同一个类。此时,对象名2的成员变量,赋值给对象名1中对应的成员变量。

   修改上面的例子,把struct结构体修改为class类。然后,执行对象之间的赋值。程序测试代码如下:

   程序运行结果如下:

   可以看到,对象之间的赋值,与struct结构体变量之间的赋值类似。是对象之间的成员变量相互赋值。在上面的例子中,定义了stud, stud1对象,然后,执行stud1 = stud;语句,把stud对象赋值给stud1对象。

   那么,根据类对象的定义,类对象只存储自己的成员变量,成员函数是共享一份代码。

   所以,对于 stud1 = stud; 这样的赋值,就是把stud对象的成员变量,一一对应赋值给stud1对象的成员变量,具体如下:

stud1.name = stud.name;

stud1.addr = stud.addr;

stud1.number = stud.number;

   所以,stud1对象的成员变量值,就被设置为stud对象的成员变量值。

对象的赋值只是对其中的成员变量赋值,而不对成员函数赋值。成员变量是占存储空间的,不同对象的成员变量占用不同的存储空间,赋值的过程是将一个对象的成员变量在存储空间的数据复制给另一个对象的成员变量的存储空间。而不同对象的成员函数是同一个函数代码段,不需要赋值,也无法对它们赋值。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

标签:

本文转载自: https://blog.csdn.net/feng19870412/article/details/117808403
版权归原作者 Linux编程学堂 所有, 如有侵权,请联系我们删除。

“C++类对象的赋值操作”的评论:

还没有评论