操作符重载的问题 一元和二元操作符的重载问题操作符总是在类中声明,并且通过调用类的成员方法来实现一元操作符 只能作用于一个对象 此时参数表为空 当前对象作为操作符的单操作数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:能否简单解释一下 二元操作符重载的问题 头大?
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:能否简单解释一下 二元操作符重载的问题 头大?
2.用途就是能够像3这样使用:man++
3.man++就是man这个实力执行了重载的那个方法1.因为重载了操作符,所以能+,这个+,所以执行的就是那个重载的方法
2.是类的成员变量啊
是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是不是成了 对象实例的属性了?
是又如何?有什么关系吗?