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
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