Jump to content

nao percebo :(


suzy

Recommended Posts

nao percebo a variavel temp, mas porque e que se faz isto?? ?

#include <iostream>
using namespace std;
class loc {
int longitude, latitude;
public:
loc() {}
loc(int lg, int lt) {
longitude = lg;
latitude = lt;
}
void show() {
cout << longitude << " ";
cout << latitude << "\n";
}
loc operator+(loc op2);
};
// Overload + for loc.
loc loc::operator+(loc op2)
{
loc temp;
temp.longitude = op2.longitude + longitude;???????????????????????????????? nao percebo
temp.latitude = op2.latitude + latitude;// porque assim?
return temp;
}
int main()
{
loc ob1(10, 20), ob2( 5, 30);
ob1.show(); // displays 10 20
ob2.show(); // displays 5 30
ob1 = ob1 + ob2;
ob1.show(); // displays 15 50
return 0;
}
Link to comment
Share on other sites

O operator+ retorna uma nova instância de loc com a longitude e a latitude da instância sobre a qual é chamado somadas com a longitude e latitude da instância que é passada como argumento. latitude e longitude nas linhas que indicaste referem-se aos campos da instância da classe loc sobre a qual é chamado o operator+.

Desaparecido.

Link to comment
Share on other sites

loc temp;
temp.longitude = op2.longitude + longitude;???????????????????????????????? nao percebo
temp.latitude = op2.latitude + latitude;// porque assim?
return temp;
}

Faz-se assim porque: o operador + é uma função mebro do "loc" assim quando é chamado basta receber o objecto a somar. Depois como tem de retornar o valor da soma é criado o objecto "temp" que é carregado com esse valor e depois retornado. É assim que o operador + deve funcionar, tipo quando somas dois inteiros, o valor de retorno tambem é um inteiro.

O objecto para o qual o operadoré chamado (o da esquerda do sinal +) não é alterado os valores dos seus campos são apenas usados para carregar o objecto resultado.

Se fosse por exemplo o operador += já serria diferente pois ai os campos do próprio objecto é que eram modigicados e o retorno devia ser "*this".

Cumps!

PS: Eu estava a escrever isto enquanto o TheDark respondeu...

A solução de um problema, por mais complicado que seja, tem de ser simples e clara. Caso contrário criamos um novo problema!O caminho mais fácil é muitas vezes o melhor caminho!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.