对象之间可以通过赋值运算符‘=’进行赋值运算,通过以下的程序可以看出。
#include <iostream>
using namespace std;
class Box{
public:
Box(int=10,int=10,int=10); //声明带有默认参数的重构函数
int volume();
private:
int height;
int width;
int length;
};
Box::Box(int h, int w , int len) {
height=h;
width=w;
length=len;
}
int Box::volume() {
return(height*width*length);
}
int main()
{
Box box1(15,30,25),box2;
cout <<"The volume of box1 is :"<<box1.volume()<<endl;
box2=box1; 通过赋值运算符的重载,实现使用赋值运算符对对象的成员的memberwise copy
cout <<"The volume of box2 is :"<<box2.volume()<<endl;
return 0;
}
说明:对象的赋值只对其中的数据成员进行赋值,而不对成员函数进行赋值,数据成员是占有存储空间的,不同的对象数据成员之间的占有不同的存储空间,赋值的过程就是将一个对象成员数据在存储空间的状态复制给另一个对象数据成员的存储空间,。而不同的对象成员函数是同一个函数代码段。
类的成员数据中不包括动态分配数据,否则在赋值时有可能出现严重的后果。
对象的复制
C++中,对象的复制机制;
Box box2(box1);
其作用是用已有的对象box1,去克隆出一个新的对象box2
C++还提供了另一种比较简单的复制形式,用赋值号代替括号
Box box2=box1;
其一般的形式为
类名 对象名1=对象名2;