Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4524067
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-04-19 20:29:54

实验目的:

    1. 掌握运算符重载的方法

    2. 当运算符函数是成员函数的时候

    3. 当运算符函数不是成员函数的时候



当 不是成员函数的时候
 
  需要声明为 友元函数,如果不声明,那么就不能操作类的

私有数据

  1. #include <iostream>
  2. #include <cstring>

  3. using namespace std;

  4. class CVector
  5. {
  6. public:
  7.     CVector();
  8.     CVector(int x,int y);

  9.     void output();

  10.     friend CVector operator+(CVector v1,CVector v2);
  11. private:
  12.     int x;
  13.     int y;
  14. };

  15. CVector::CVector()
  16. {
  17.     x=0;
  18.     y=0;
  19. }

  20. CVector::CVector(int x,int y)
  21. {
  22.     this->x = x;
  23.     this->y = y;
  24. }

  25. void CVector::output()
  26. {
  27.     cout<<this->x<<","<<this->y<<endl;
  28. }

  29. CVector operator+(CVector v1,CVector v2)
  30. {             声明为友元函数 才能访问 私有成员数据
  31.     CVector temp;    
  32.     temp.x=v1.x+v2.x;
  33.     temp.y=v1.y+v2.y;
  34.     return temp;
  35. }
  36. int main()
  37. {
  38.     CVector v1(2,3),v2(2,3),v3;
  39.     //v3 = v1 + v2;
  40.     v3=v1+v2;
  41.    //v3=operator+(v1,v2); 也可以实现 v1+v2 功能
  42.     v3.output();
  43.     return 0;
  44. }

  1. ywx@yuweixian:~/yu/c++/chongzai$ ./chongzai
  2. 4,6
  3. ywx@yuweixian:~/yu/c++/chongzai$




阅读(809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~