对象的赋值
如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值。
对象之间的赋值也是通过赋值运算符“=”进行的。本来赋值运算符“=”只能用来对单个的变量赋值,现在被扩展为两个同类对象之间的赋值,这是通过对赋值运算符的重载实现的。
实际上这个过程是通过成员复制来实现的,即将一个对象的成员值一一复制给另外一个对象的成员。
对象赋值的一般形式:
对象名1=对象名2;
注意,对象1和对象2必须是属于同一个类
=========示例代码1.1===============
说明:
(1)对象的赋值值对其中的数据成员赋值,而不对成员函数赋值。
数据成员是占存储空间的,不同的对象的数据成员占有不同的存储空间,赋值过程是将一个对象的数据成员在存储空间的状态复制给另一对象的数据成员的存储空间。
而不同对象的成员函数是同一个函数代码段,既不需要也没法向它们赋值。
(2)类的数据成员中,不能包括动态分配的数据。
对象的复制
有时我们需要用到多个完全相同的对象,并进行相同的初始化。或者有时候,我们需要将对象在某一瞬间的状态保留下来。
为了处理这种情况,C++提供了对象的复制机制,用一个以后的对象快速的复制出多个完全相同的对象。
其一般形式为
类名 对象2(对象1)
用对象1复制出对象2.
这个函数是这样的
C++还提供另外一种方便用户的复制形式,用赋值号代替括号
其一般形式是:
类名 对象名1 = 对象名2;
s3.reset();//s3中