• 关于运算符重载


        class Class2D
        
    {
            
    public Class2D(int A, int B)
            
    {
                
    this.A = A;
                
    this.B = B;
            }


            
    public int A;
            
    public int B;

            
    public static Class2D operator +(Class2D d2, Class3D d3)
            
    {
                
    return new Class2D(d2.A + d3.A, d2.B + d3.B);
            }

        }


        
    class Class3D
        
    {
            
    public Class3D(int A, int B, int C)
            
    {
                
    this.A = A;
                
    this.B = B;
                
    this.C = C;
            }


            
    public int A;
            
    public int B;
            
    public int C;

            
    public static Class3D operator +(Class3D d3, Class2D d2)
            
    {
                
    return new Class3D(d3.A + d2.A, d3.B + d2.B, d3.C);
            }


            
    public static Class2D operator +(Class2D d2, Class3D d3)
            
    {
                
    return new Class2D(d2.A + d3.A, d2.B + d3.B);
            }

    以上代码如果不调用,则可以编译通过;但是如果调用,则编译期报错:
                Class3D d3 = new Class3D(123);
                Class2D d2 
    = new Class2D(1112);

                Class2D newD2 
    = d2 + d3;
    原因是最后一句,因为参与运算的Class3D和Class2D都提供了
    +(Class2D d2, Class3D d3)
    的重载,编译器不知道应该使用那一个,当然会报错了。

    所以得出一个结论:想搞死编译器不是那么容易的哦!


  • 相关阅读:
    PAT 天梯赛 L1-048. 矩阵A乘以B 【数学】
    PAT 天梯赛 L1-047. 装睡 【水】
    PAT 天梯赛 L1-047. 装睡 【水】
    PAT 天梯赛 L1-045. 宇宙无敌大招呼 【水】
    PAT 天梯赛 L1-045. 宇宙无敌大招呼 【水】
    PAT 天梯赛 L1-044. 稳赢 【循环】
    PAT 天梯赛 L1-044. 稳赢 【循环】
    PAT 天梯赛 L1-042. 日期格式化 【水】
    PAT 天梯赛 L1-042. 日期格式化 【水】
    PAT 天梯赛 L1-041. 寻找250 【水】
  • 原文地址:https://www.cnblogs.com/Jax/p/1179255.html
Copyright © 2020-2023  润新知