H_J_H

------专用杂物房
posts - 26, comments - 1, trackbacks - 0, articles - 119

[导入]运算符重载

Posted on 2006-04-26 21:17 H_J_H 阅读(96) 评论(0)  编辑 收藏 引用
 C#中预定义的运算符的操作对象只能是基本数据类型。实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C#中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。

   运算符重载实质上是函数重载。在表达式中,使用运算符表示法(即符号)来引用运算符,而在声明中,使用函数表示法来引用运算符。

运算符重载是通过创建运算符函数来实现的,运算符函数定义了重载的运算符将要进行的操作,运算符函数的定义与其他函数 的定义类似,惟一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。

 

例:

using System;

 

namespace yunsuanfuchongzai

{

    public class Complex //定义一个复数类

    {

        public int real;

        public int imaginary;

 

        public Complex(int real,int imaginary)

        {

            this.real = real;

            this.imaginary = imaginary;

        }

 

        public static Complex operator +(Complex c1,Complex c2)//声明对‘+’运算符的重载

        {

            return new Complex(c1.real + c2.real,c1.imaginary + c2.imaginary);

        }

 

        public override string ToString()   //重写ToString方法,以特定的格式显示复数

        {

            return(String.Format("{0} + {1}i",real,imaginary));

        }

 

        [STAThread]

        static void Main(string[] args)

        {

            Complex num1 = new Complex(2,3);

            Complex num2 = new Complex(3,4);

 

            Complex sum = num1 + num2;//使用重载后的‘+’运算符对两个复数进行运算

 

            Console.WriteLine("First complex number: {0}",num1.ToString());//使用重载后的ToString方法显示

            Console.WriteLine("second complex number: {0}",num2.ToString());//两个复数以及它们相加后的结果

            Console.WriteLine("the sum of the two number: {0}",sum.ToString());

        }

    }

 

}



sopper 2006-04-13 16:37

文章来源:http://sopper.cnblogs.com/archive/2006/04/13/374406.html
只有注册用户登录后才能发表评论。