A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘴角上揚ぃ读不 中级黑马   /  2014-5-27 21:01  /  1571 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 嘴角上揚ぃ读不 于 2014-5-28 20:01 编辑

怎么实现运算符的重载?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

倒序浏览
1.在类中或者结构中用operator 关键字来声明运算符
2.所有的运算符重载都声明为public (公开的)和static(静态的)

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
劇情侢媄終究媞 发表于 2014-5-27 22:10
1.在类中或者结构中用operator 关键字来声明运算符
2.所有的运算符重载都声明为public (公开的)和static(静 ...

最好有代码的事例
回复 使用道具 举报
本帖最后由 yllogininbh 于 2014-5-31 22:09 编辑
  1. class Program
  2.      {
  3.          static void Main(string[] args)
  4.           {
  5.               Vector vect1, vect2, vect3;
  6.              vect1 = new Vector(3.0, 3.0, 1.0);
  7.               vect2 = new Vector(2.0, -4.0, -4.0);
  8. vect3 = vect1 + vect2;

  9. Console.WriteLine("vect1=" + vect1.ToString());
  10. Console.WriteLine("vect2=" + vect2.ToString());
  11. Console.WriteLine("vect3=" + vect3.ToString());
  12. Console.ReadLine();
  13. }
  14. }

  15. struct Vector
  16. {
  17. public double x, y, z;

  18. public Vector(double x, double y, double z)
  19. {
  20. this.x = x;
  21. this.y = y;
  22. this.z = z;
  23. }

  24. public Vector(Vector rhs)

  25. {
  26. this.x = rhs.x;
  27. this.y = rhs.y;
  28. this.z = rhs.z;
  29. }

  30. public override string ToString()
  31. {
  32. return "(" + x + "," + y + "," + z + ")";
  33. }

  34. public static Vector operator +(Vector lhs, Vector rhs)
  35. {
  36. Vector result = new Vector(lhs);
  37. result.x += rhs.x;
  38. result.y += rhs.y;
  39. result.z += rhs.z;
  40. return result;
  41. }
  42. }
复制代码


运算符重载

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
加                                                                                
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马