Partilhar via


Sobrecarga de operador (versus translation from VPE for Csharp Java)

Como o C++, translation from VPE for Csharp permite que você sobrecarga operadores para uso em suas próprias classes.Isso torna possível para um tipo de dados definidos pelo usuário pesquisar mais natural e ser tão lógica a ser usado sistema autônomo um tipo de dados fundamental.Por exemplo, você pode criar um novo tipo de dados chamado ComplexNumber para representar um número complexo e fornecer métodos que executam operações matemáticas em tais números usando operadores aritméticos padrão, sistema autônomo, por exemplo, usando o + operador para adicionar dois números complexos.

Para sobrecarga um operador, você escrever uma função que tenha o operador nome seguido do símbolo para o operador a ser sobrecarga ed.Por exemplo, isso é como você faria sobrecarga o + operador:

public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)

Todas as sobrecargas de operador são métodos estático da classe.Esteja ciente também de que se você sobrecarregar a igualdade (==) operador, você deverá sobrecarregar o (operador de desigualdade!=) sistema autônomo bem. O < e > operadores e o < = e > = operadores também devem ser sobrecarregados em pares.

A lista completa dos operadores que podem ser sobrecarregados é:

  • Operadores unários: +, -, !, ~, ++, --, true, false

  • Operadores binário: +, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=

O exemplo de código a seguir cria um ComplexNumber classe que sobrecarrega a + e - operadores:

public class ComplexNumber
{
    private int real;
    private int imaginary;

    public ComplexNumber() : this(0, 0)  // constructor
    {
    }

    public ComplexNumber(int r, int i)  // constructor
    {
        real = r;
        imaginary = i;
    }

    // Override ToString() to display a complex number in the traditional format:
    public override string ToString()
    {
        return(System.String.Format("{0} + {1}i", real, imaginary));
    }

    // Overloading '+' operator:
    public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b)
    {
        return new ComplexNumber(a.real + b.real, a.imaginary + b.imaginary);
    }

    // Overloading '-' operator:
    public static ComplexNumber operator-(ComplexNumber a, ComplexNumber b)
    {
        return new ComplexNumber(a.real - b.real, a.imaginary - b.imaginary);
    }
}

Essa classe permite criar e manipular dois números complexos com o código sistema autônomo este:

class TestComplexNumber
{
    static void Main()
    {
        ComplexNumber a = new ComplexNumber(10, 12);
        ComplexNumber b = new ComplexNumber(8, 9);

        System.Console.WriteLine("Complex Number a = {0}", a.ToString());
        System.Console.WriteLine("Complex Number b = {0}", b.ToString());

        ComplexNumber sum = a + b;
        System.Console.WriteLine("Complex Number sum = {0}", sum.ToString());

        ComplexNumber difference = a - b;
        System.Console.WriteLine("Complex Number difference = {0}", difference.ToString());
    }
}

sistema autônomo o programa mostra, agora você pode usar o sinal de mais e menos operadores em objetos que pertencem a seus ComplexNumber classe bastante intuitivamente. Aqui está a saída que você obterá:

Complex Number a = 10 + 12i

Complex Number b = 8 + 9i

Complex Number sum = 18 + 21i

Complex Number difference = 2 + 3i

Java não oferece suporte a sobrecarga de operador, embora internamente sobrecarrega o + operador de concatenação de seqüência de caracteres.

Consulte também

Tarefas

Exemplo de sobrecarga de operador

Conceitos

Guia de Programação C#

Referência

Operadores sobrecarregável (guia de programação translation from VPE for Csharp)

Outros recursos

Translation from VPE for Csharp linguagem de programação para desenvolvedores Java