操作符重载的问题 一元和二元操作符的重载问题操作符总是在类中声明,并且通过调用类的成员方法来实现一元操作符 只能作用于一个对象 此时参数表为空 当前对象作为操作符的单操作数using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
    class Player
    {
        public int neili;
        public int tili;
        public int jingyan;
        public int neili_r;
        public int tili_r;
        public Player()
        {
            neili = 10;
            tili = 50;
            jingyan = 0;
            neili_r = 50;
            tili_r = 50;
        }
        public static Player operator ++(Player p)
        {
            p.neili = p.neili + 50;
            p.tili = p.tili + 100;
            p.neili_r = p.neili;
            p.tili_r = p.tili;
            return p;
        }
       public void show()
       {
Console.WriteLine("Tili:{0}",tili);
Console.WriteLine("Jingyan:{0}",jingyan);
Console.WriteLine("Neili:{0}",neili);
Console.WriteLine("Tili_full:{0}",tili_r);
Console.WriteLine("Neili_full:{0}",neili_r);
       }
    }
    class test
    {
       public static void Main(string[] args)
        {
            Player man = new Player();
            man.show();
            man++;
            Console.WriteLine("now upgrading.....");
            man.show();        }
    }
}
我的问题如下:        public static Player operator ++(Player p)
        {
            p.neili = p.neili + 50;
            p.tili = p.tili + 100;
            p.neili_r = p.neili;
            p.tili_r = p.tili;
            return p;
        }
1:++ 是否代表重操作符?
2:这样的一元操作符和重新定义类方法没什么区别?它有什么用途吗?
3:man++ 代表什么?二元操作符重载 参数表中有个参数,当前对象作为该操作符的左操作数 参数作为操作符的右操作数
using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
    class DKR
    {
        public int x, y, z;
        public DKR(int vx,int vy,int vz)
        {
            x = vx;
            y = vy;
            z = vz;
        }
        public static DKR operator +(DKR d1,DKR d2)
        {
           DKR dkr=new DKR(0,0,0);
           dkr.x = d1.x + d2.x;
           dkr.y = d1.y + d2.y;
           dkr.z = d1.z + d2.z;
           return dkr;
        }
    }
    class test
     {
 
    public static void Main(string[] args)
        {
            DKR d1 = new DKR(3, 2, 1);
            DKR d2 = new DKR(0, 6, 5);
            DKR d3 = d1 + d2;
            Console.WriteLine("the 3d location of d3 is:{0},{1},{2}", d3.x, d3.y, d3.z);
        }
      }
}问题如下:
1:         DKR d1 = new DKR(3, 2, 1);
            DKR d2 = new DKR(0, 6, 5);
            DKR d3 = d1 + d2;       
 d1,d2 都是类的两个实例 为什么出现加的情况了呢?
2:    
    public static DKR operator +(DKR d1,DKR d2)
        {
           DKR dkr=new DKR(0,0,0);
           dkr.x = d1.x + d2.x;
           dkr.y = d1.y + d2.y;
           dkr.z = d1.z + d2.z;
           return dkr;
        }
  此时 这样的书写形式  dkr.x = d1.x + d2.x; x是不是成了 对象实例的属性了?
3:能否简单解释一下 二元操作符重载的问题  头大?

解决方案 »

  1.   

    1.++就是重载的一元操作符
    2.用途就是能够像3这样使用:man++
    3.man++就是man这个实力执行了重载的那个方法1.因为重载了操作符,所以能+,这个+,所以执行的就是那个重载的方法
    2.是类的成员变量啊
      

  2.   

    1:++ 是否代表重操作符?   
    是2:这样的一元操作符和重新定义类方法没什么区别?它有什么用途吗?  
    在这里可以认为没有区别,不过写起来简练一点.3:man++ 代表什么?
    man.neili = man.neili + 50;
    man.tili = man.tili + 100;
    man.neili_r = man.neili;
    man.tili_r = man.tili;1:d1,d2 都是类的两个实例 为什么出现加的情况了呢?
    这个加是你自己定义的.2 dkr.x = d1.x + d2.x; x是不是成了 对象实例的属性了?
    是又如何?有什么关系吗?