Nu skall du kunna exekvera t.ex. följande kod (prova):
Complex c1; Complex c2(8, 6); Complex c3(1, 2); Complex c4(3, 5); c1 = c2 + c3 - c4; // Hur kan detta fungera? c1.print(); // Du bör erhålla utskriften: (6, 3i)Hur kommer det sig att det fungerar fast du inte har definierat hur tilldelningsoperatorn för komplexa tal fungerar?
Komplexa tal adderas och subtraheras genom att dess real- och imaginärdelar adderas respektive subtraheras var och ena för sig.
Överlagra inläsningsoperatorn >> för objekt av klassen Komplex så att inläsning av ett komplext tal kan ske på samma form som ovan.
Komplex c1(2.5, 3.2); Komplex c2(1.2, 4.1); cout << c1 + c2; // Detta har du redan gjort i laboration C1 cout << c1 + 2.8; // Hur fixar man detta ! cout << 2.8 + c1; // Här behöver man änvända sig av en friend...Detta går inte så bra eftersom man i det senare fallet applicerar operatorn + på flyttalet 2.8 vilket inte är ett objekt av klassen Komplex. Detta kan man dock kringgå genom att definiera en vanlig funktion som gör detta och sedan deklarera den som en friendmetod till klassen Komplex.
Om en operator kräver en vänsteroperand av en annan typ så kan den inte göras som en member funktion utan måste då göras som en vanlig funktion. Denna funktion kan sedan göras till en friend i den aktuella klassen och på så sätt får den ändå tillgång till klassens privata instansvariabler.