谈谈C++中对象之间的赋值



如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值。

对象之间的赋值也是通过赋值运算符“=”进行的。本来,赋值运算符“=”只能用来对单个的变量赋值,现在被扩展为两个同类对象之间的赋值,这是通过对赋值运算符的重载实现的。

实际这个过程是通过成员复制来完成的,即将一个对象的成员值一一复制给另一对象的对应成员。

对象赋值的一般形式为:
    对象名1 = 对象名2;
注意对象名1和对象名2必须属于同一个类。例如
    Student stud1,stud2; //定义两个同类的对象
    stud2=stud1; //将stud1赋给stud2

通过下面的例子可以了解怎样进行对象的赋值。

[例9.9] 对象的赋值。

复制纯文本复制
 
  1. #include <iostream>
  2. using namespace std;
  3. class Box
  4. {
  5. public :
  6. Box(int =10,int =10,int =10); //声明有默认参数的构造函数
  7. int volume( );
  8. private :
  9. int height;
  10. int width;
  11. int length;
  12. };
  13. Box::Box(int h,int w,int len)
  14. {
  15. height=h;
  16. width=w;
  17. length=len;
  18. }
  19. int Box::volume( )
  20. {
  21. return (height*width*length); //返回体积
  22. }
  23. int main( )
  24. {
  25. Box box1(15,30,25),box2; //定义两个对象box1和box2
  26. cout<<"The volume of box1 is "<<box1.volume( )<<endl;
  27. box2=box1; //将box1的值赋给box2
  28. cout<<"The volume of box2 is "<<box2.volume( )<<endl; return 0;
  29. }
#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; //定义两个对象box1和box2
   cout<<"The volume of box1 is "<<box1.volume( )<<endl;
   box2=box1; //将box1的值赋给box2
   cout<<"The volume of box2 is "<<box2.volume( )<<endl; return 0;
}

运行结果如下:
The volume of box1 is 11250
The volume of box2 is 11250

说明:

  • 对象的赋值只对其中的数据成员赋值,而不对成员函数赋值。数据成员是占存储空间的,不同对象的数据成员占有不同的存储空间,赋值的过程是将一个对象的数据成员在存储空间的状态复制给另一对象的数据成员的存储空间。而不同对象的成员函数是同一个函数代码段,不需要、也无法对它们赋值。
  • 类的数据成员中不能包括动态分配的数据,否则在赋值时可能出现严重后果 (在此不作详细分析,只需记住这一结论即可)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值