定义一个学生类,数据成员包括学号、姓名、成绩,重载运算符“<<”和“>>”,实现学生类对象的直接输入和输出。
“<<”和“>>”是二元运算符,第二个参数不知道该在本题中起到什么作用,请帮忙看一下该代码如何写比较好?

解决方案 »

  1.   


    // cs_keyword_operator.cs
    using System;
    class Fraction
    {
        int num, den;
        public Fraction(int num, int den)
        {
            this.num = num;
            this.den = den;
        }    // overload operator +
        public static Fraction operator +(Fraction a, Fraction b)
        {
            return new Fraction(a.num * b.den + b.num * a.den,
               a.den * b.den);
        }    // overload operator *
        public static Fraction operator *(Fraction a, Fraction b)
        {
            return new Fraction(a.num * b.num, a.den * b.den);
        }    // user-defined conversion from Fraction to double
        public static implicit operator double(Fraction f)
        {
            return (double)f.num / f.den;
        }
    }class Test
    {
        static void Main()
        {
            Fraction a = new Fraction(1, 2);
            Fraction b = new Fraction(3, 7);
            Fraction c = new Fraction(2, 3);
            Console.WriteLine((double)(a * b + c));
        }
    }换一下就可以了。
      

  2.   

    / cs_keyword_operator.cs
    using System;
    class Fraction
    {
        int num, den;
        public Fraction(int num, int den)
        {
            this.num = num;
            this.den = den;
        }    // overload operator +
        public static Fraction operator +(Fraction a, Fraction b)
        {
            return new Fraction(a.num * b.den + b.num * a.den,
               a.den * b.den);
        }    // overload operator *
        public static Fraction operator *(Fraction a, Fraction b)
        {
            return new Fraction(a.num * b.num, a.den * b.den);
        }    // user-defined conversion from Fraction to double
        public static implicit operator double(Fraction f)
        {
            return (double)f.num / f.den;
        }
    }class Test
    {
        static void Main()
        {
            Fraction a = new Fraction(1, 2);
            Fraction b = new Fraction(3, 7);
            Fraction c = new Fraction(2, 3);
            Console.WriteLine((double)(a * b + c));
        }
    }
    不hoarse把·
      

  3.   

    控制台、流等IO设备才有输入输出概念吧,你的学生输入输出的说法我怎么理解不了呢,
    如果是初始化和显示的话,new Stduent{.学号=xx, .姓名=xx, .成绩=xx} 和实现ToString不就可以了么?
    如果是类似与一个班级,增加减少学生的概念,用集合就可以了呀
      

  4.   

    “<<”和“>>”在C#里是重载的位移运算符,不能重载你说的那个输入输出的吧
      

  5.   

    需要在C#中实现,自己写了一段代码不是很满意,<<(stu s1,int n),第二个参数我觉得用不上啊
      

  6.   

    .net下根本没有cin,cout这两个类,也没有输入输出<<,>>运算符,何来的运算符重载?如果你确定看的是c#而不是c++的书,那么把这本书扔到垃圾桶吧
      

  7.   


    c#跟c++是不一样的。可以看msdn:http://msdn.microsoft.com/en-us/library/5y82h021.aspx因此除非假设那本书的作者不懂c#,否则真没有办法解释这个问题。可以胡乱写一个public class Student
    {
        public string Name;    static public Student operator >>(Student s, int  m)
        {
            for (int i = 0; i < m; i++)
                Console.WriteLine("student {0}.", s.Name);
            return s;
        }
    }