您的位置:首页 > 其它

对象的赋值与对象的复制

2017-06-04 14:38 183 查看
对象的赋值针对指对象中所有数据成员的值;

对象的赋值只对其中的数据成员赋值

对象赋值中,不涉及成员函数的话题,因为同一类的所有对象有各自

的成员数据,但是成员函数是共享的。

同类对象之间可以互相赋值,对象名1=对象名2.

实现的原理:赋值运算符的重载。

对象的复制是用已有的对象克隆出一个新对象:类名 对象2(对象1),比如:

Box box2(box1);

对于上面的语句来说,box2的初始化的参数是另外一个对象。

对象的复制的原理:编译系统提供的默认复制构造函数。该复制构造函数举例如下:

Box::Box(const Box &b)

{
height=b.height;


width=b.width;

length=b.length;

}

上面默认复制构造函数中的参数用引用类型的好处为:不必为了这个对象专门开辟存储空间。

参数之所以用const类型是因为没有必要在函数中改变b的值,有效保护b引用的实参不被修改。

等价的形式: 类名 对象2=对象1;这种也执行复制构造函数

例如:Box box2=box1;

赋值初始化             vs                  复制初始化

c味的赋值初始化                        c++味的复制初始化(调用默认复制构造函数)

int a=5                                          int a(5);

float w=a+3.2                              float w(a+3.2)

string name="L. He"                string name("L.He")

string s(name);

Time t1;

Time t2(8,30,20)

Time t3(t1);

何时要通过复制构造函数进行对象复制?

1.新建立一个对象:利用复制构造函数进行初始化

Box box1(box2);

2. 当函数的参数为类的对象:调用函数时,将实参对象完整地传递给形参,通过调用

复制构造函数来建立一个实参的拷贝

3. 函数的返回值是类的对象:在函数调用完毕,将函数中的对象复制一个临时对象并传递给该函数的调用处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: