zoukankan      html  css  js  c++  java
  • c#语法基础(2)——运算符重载

    c#允许用户定义的类型,通过使用operator关键字定义静态成员函数来重载运算符

    下面来看一个例子:

    public class ComplexNumber
    {
        private int real;
        private int imaginary;
        //构造器
        public ComplexNumber(int r, int i)
        {
            real = r;
            imaginary = i;
        }
        //重载ToString方法,用来显示ComplexNumber
        public override string ToString()
        {
            if (imaginary >= 0)
                return (System.String.Format("{0}+{1}i", real, imaginary));
            else
                return (System.String.Format("{0}-{1}i", real, imaginary));
        }
    }

    我们需要+、-实现两个虚数相加或相减,使用下面的方法重载+、-运算符

    //重载+运算符
    public static ComplexNumber operator+(ComplexNumber lhs,ComplexNumber rhs)
    {
        return new ComplexNumber(
        lhs.real+rhs.real,lhs.imaginary+rhs.imaginary);
    }
    //重载-运算符
    public static ComplexNumber operator-(ComplexNumber lhs,ComplexNumber rhs)
    {
        return new ComplexNumber(
        lhs.real-rhs.real,lhs.imaginary-rhs.imaginary);
    }

    运算符重载的声明方式和方法的声明方式相同,但operator关键字告诉编译器它实际上是运算符重载。

    本例中

    public static ComplexNumber operator+(ComplexNumber lhs,ComplexNumber rhs)

    表示的重载运算符“+”是全局静态的返回值是ComplexNumber类型,输入参数为两个ComplexNumber型变量,返回值仍为ComplexNumber型,

    返回的操作是调用ComplexNumber类中的构造器和ToString方法。

    public static implicit operator ComplexNumber (double d)

    其中implicit表示隐形类型转换,将d由double型转换成ComplexNumber型。

    public double D (get;set;)

     是一种强制类型转换形式,意思是强制转换成double型

    
    
  • 相关阅读:
    洛谷 P1650 田忌赛马(dp)
    卡常技巧(持续更新)
    CF106C Buns(多重背包 单调队列优化)
    洛谷 P1385 密令(dp,离线)
    CF245H Queries for Number of Palindromes(dp,二维前缀和)
    CF1061C Multiplicity(dp)
    对拍技巧
    牛客练习赛89 解题报告(ABCDF)
    洛谷 P1018 [NOIP2000 提高组] 乘积最大(dp,高精度)
    洛谷 P5629 【AFOI-19】区间与除法(ST表)
  • 原文地址:https://www.cnblogs.com/wt1990/p/4504656.html
Copyright © 2011-2022 走看看