Jump to content

Recommended Posts

Posted

O metoda friend a clasei poate accesa orice din clasa din care face parte, inclusiv metode/var. de tip private, protected.

Functiile friend returneaza un obiect de tipul clasei. Sunt folosite deobicei la supraincarcarea operatorilor "<<" si ">>".

#include<iostream>

#include<math.h>

using namespace std;

class complex

{

	float x, y;

public:

complex(float , float );

friend float modul(complex &z);

friend complex operator+(complex &z, float nr);

friend complex operator+(float nr, complex &z);

};

complex::complex(float a, float b)

{

	x=a;

	y=b;

}

//cele de tip friend se "definesc" folosind doar tipul intors si numele

float modul(complex &z)

{

	return sqrt(z.x*z.x+z.y*z.y);

}

complex operator+(complex &z, float nr)

{

complex h(z.x+nr, z.y); //nr va primi valoarea numarului real dat de noi

//si evident se va aduna la partea reala a numarului complex z

return h;

}

complex operator+(float nr, complex &z)

{

	complex h(z.x+nr, z.y);

	return h;

}

int main()

{

	complex z(5, 8);

	z=z+9; //aduna o valoare reala la z

	z=3+z; //se poate, pentru ca am dorit ca operatia de adunare sa fie comutativa, si am declarat in plus, inca o functie de tip friend cu parametri in ordinea inversa fata de cealalta 

	cout<<"afisez modulul numarului nou: "<<modul(z)<<" ";

	system("PAUSE");

return 0;

}

  • 4 weeks later...

Posted

Pentru ca functiile friend au 2 parametri, pe cand supr. operatorului + fara friend iti ofera doar un parametru..de unde si solutia problemei: z+float si float+z.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

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.