static void Main(string[] args)
        {
            rational r1 = new rational(5);
            rational r2 = new rational(51);
            rational r3 = r1 + r2;  // rational rational 回来 rational
            Console.WriteLine(r3.Value);
            Console.WriteLine(r1 - r2);  // rational rational 回来 int

            B bb = new B(52);
            rational rr = new rational(1);
            B bsbs = bb / rr;    // B rational 回来 B
            Console.WriteLine(bsbs);
        }
public class B
    {
        public B(int Nu)
        {
            Num = Nu;
        }
        public int Num { get; set; }
    }
    public sealed class rational
    {
        private int _value = 0;
        public int Value
        {
            get { return _value; }
            set { _value = value; }
        }
        public rational(int value)
        {
            this._value = value;
        }
        public rational()
        {

        }
        public static rational operator +(rational numl, rational numm2)
        {
            return new rational(numl.Value + numm2.Value);
        }
        public static int operator -(rational numl, rational numm2)
        {//1  public  2  static    3 方法 至少一个参数为 类的 类型rational
            return (numl.Value - numm2.Value);

        }
        public static B operator /(B b, rational r)
        {
            B b2 = new B(b.Num + r.Value);
            return b2;
        }
    }

  

static void Main(string[] args)
        {
            rational ri = );
            opop p = (opop)ri;  //过去 显式
            Console.WriteLine(p.Name);
            p.Name = ";

            rational r2 = p;   //回来 隐式
            Console.WriteLine(r2.Value);
            //int n = 10;
            //rational r1 = n;
            //double d = (double)r1;
        }
    public sealed class rational
    {
        ;
        public int Value
        {
            get { return _value; }
            set { _value = value; }
        }
        public rational(int value)
        {
            this._value = value;
        }
        public rational(double value)
        {
            this._value = (int)value;
        }
        public rational()
        {

        }
        public int ToInt()
        {
            return _value;
        }
        public double ToDouble()
        {
            return (double)_value;
        }
        public static rational operator +(rational num1, rational num2)
        {
            rational result = new rational(num1.Value + num2.Value);
            return result;
        }
        public static implicit operator rational(int value)
        {
            return new rational(value);
        }
        public static implicit operator rational(double value)
        {
            return new rational(value);
        }
        public static explicit operator int(rational value)
        {
            return value.ToInt();
        }
        public static explicit operator double(rational value)
        {
            return value.ToDouble();
        }

        //
        public static explicit operator opop(rational r1)
        {  //过去 显式
            opop o = new opop(r1.Value + "");
            return o;
        }

        public static implicit operator rational(opop op1)
        {  //回来 隐式  1 public  2 static  3 可理解为 方法名 是返回类型  参数为待转换的类型
            rational r1 = new rational(int.Parse(op1.Name));
            return r1;
        }

    }

    public class opop
    {
        public opop(string str)
        {
            Name = str;
        }
        public string Name { get; set; }

    }

  

操作符(运算符)重载 或者叫 二元运算符 operator + 与 转换式操作符 implicit operator explicit operator的更多相关文章

  1. C++ 运算符重载一(二元运算符重载)

    //二元运算符重载 #include<iostream> using namespace std; class Point { public: Point(int x,int y){ th ...

  2. C++:成员运算符重载函数和友元运算符重载函数的比较

    5.2.4 成员运算符重载函数和友元运算符重载函数的比较 (1)对双目运算符而言,成员运算符重载函数参数表中含有一个参数,而友元运算符重载函数参数表中有两个参数:对于单目运算符而言,成员运算符重载函数 ...

  3. C++:运算符重载函数之成员运算符重载函数

    5.2.3 成员运算符重载函数 在C++中可以把运算符重载函数定义为某个类的成员函数,称之为成员运算符重载函数. 1. 定义成员运算符重载函数的语法形式 (1)在类的内部,定义成员运算符重载函数的格式 ...

  4. 从零开始学C++之运算符重载(三):完善String类([]、 +、 += 运算符重载)、>>和<<运算符重载

    在前面文章中使用过几次String类的例子,现在多重载几个运算符,更加完善一下,并且重载流类运算符. []运算符重载 +运算符重载 +=运算符重载 <<运算符重载 >>运算符重 ...

  5. 完善String类([]、 +、 += 运算符重载)、>>和<<运算符重载

    在前面文章中使用过几次String类的例子,现在多重载几个运算符,更加完善一下,并且重载流类运算符. []运算符重载 +运算符重载 +=运算符重载 <<运算符重载 >>运算符重 ...

  6. C++ 运算符重载时,将运算符两边对象交换问题.

    在C++进行运算符重载时, 一般来讲,运算符两边的对象的顺序是不能交换的. 比如下面的例子: #include <iostream> using namespace std; class ...

  7. C++:运算符重载函数之友元运算符重载

    5.2.2 友元运算符重载函数 运算符重载函数一般采用两种形式定义: 一是定义为它将要操作的类的成员函数(简称运算符重载函数): 二是定义为类的友元函数(简称为友元运算符重载函数). 1.定义友元运算 ...

  8. C++学习之路—运算符重载(二)运算符重载作为类的成员函数和友元函数

    (根据<C++程序设计>(谭浩强)整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明) 对运算符重载的函数有两种处理方式:(1)把运算符 ...

  9. C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符

    1.算术/关系运算符 平时,定义成非成员函数以同意左右側运算对象进行转换.由于这些运算符一般不须要改变运算对象的状态,所以形參都是常量的引用. 以"+"号运算符为例: Person ...

随机推荐

  1. JAVA版拆分大整数为2幂的和算法

    import java.util.ArrayList; import java.util.List; public class StrTest { public static void main(St ...

  2. HDU 6305.RMQ Similar Sequence-笛卡尔树+数学期望 (2018 Multi-University Training Contest 1 1008)

    6305.RMQ Similar Sequence 这个题的意思就是对于A,B两个序列,任意的l,r,如果RMQ(A,l,r)=RMQ(B,l,r),B序列里的数为[0,1]的实数,B的重量为B的所有 ...

  3. spoj - Grass Planting(树链剖分模板题)

    Grass Planting 题意 给出一棵树,树有边权.每次给出节点 (u, v) ,有两种操作:1. 把 u 到 v 路径上所有边的权值加 1.2. 查询 u 到 v 的权值之和. 分析 如果这些 ...

  4. ASP.NET基础题(1-10)

    1.简述 private. protected. public. internal 修饰符的访问权限. private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内 ...

  5. Java重定向IO

    import java.io.*; import java.util.*; public class Main { public static void main(String[] args) thr ...

  6. Map泛型集合-输入名字输出成绩

    package collection; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import ...

  7. hdu 1500 Chopsticks DP

    题目链接:HDU - 1500 In China, people use a pair of chopsticks to get food on the table, but Mr. L is a b ...

  8. [BZOJ1194][HNOI2006][强连通分量Tarjan+dfs]潘多拉的盒子

    [BZOJ1194][HNOI2006]潘多拉的盒子 Input 第一行是一个正整数S,表示宝盒上咒语机的个数,(1≤S≤50).文件以下分为S块,每一块描述一个咒语机,按照咒语机0,咒语机1„„咒语 ...

  9. 使用 SVG 来实现波浪 (wave) 动画效果

    如下图所示的波浪动画效果,实现方法有很多,比如CSS或者是js等方法都可以实现.不过,要是使用SVG来实现的,我觉得比其它两种方法都要简单.这篇文章就来讲讲使用SVG来实现类似这样的波浪动画效果是多么 ...

  10. hdu1008(c++)

    分清上升停留下降一步步来就是了 #include<iostream>#include<vector>using namespace std;int main(){ int N, ...