如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值。
对象之间的赋值也是通过赋值运算符"="进行的。本来,赋值运算符"="只能用来对单个的变量赋值,现在被扩展为两个同类对象之间的赋值,这是通过对赋值运算符的重载实现的(关于运算符的重载将在后面的文章中介绍)。实际上这个过程是通过成员复制(memberwise copy)来完成的,即将一个对象的成员值一一复制给另一对象的对应成员。对象赋值的一般形式为
对象名1=对象名2;
注意对象名1和对象名2必须属于同一个类。
编写程序:
运行结果:
说明:
(1)对象的赋值只对其中数据成员赋值,而不对成员函数赋值。数据成员是占存储空间的,不同对象的数据成员占有不同的存储空间,赋值的过程是将一个对象的数据成员在存储空间的状态复制给另一个对象的数据成员的存储空间。而不同对象的成员函数是同一个函数代码段,不需要,也无法对它们赋值。
(2)类的数据成员中不能包括动态分配的数据,否则在赋值时可能出现严重后果(在此不详细分析,只须记住这一结论即可)。