C++ mintapélda - Belépés

komplex.h

// komplex számok osztálya 
#include <iostream.h> // input/output müveletekhez
class Complex {
   // tagváltozók
   protected: // kivülről nem, de a származtatott osztályokból elérhető
   double real; // valós rész
   double imag; // képzetes rész
public:
   // konstruktorok
   // konstruktor, alapértelmezett paraméterekkel
   Complex(double r = 0.0, double i = 0.0) { real = r; imag = i; }
// konstruktor másik komplex szám alapján
   Complex(const Complex& c) { real = c.real; imag = c.imag; }
// protected tagváltozók elérését biztosító metódusok
   // valós rész beállítása
   void setReal(double r) { real = r; }
// képzetes rész beállítása
   void setImag(double i) { imag = i; }
// valós rész lekérdezése
   double getReal(void) { return real; }
// képzetes rész lekérdezése
   double getImag(void) { return imag; }
// általános tagfüggvények
   // abszolút érték == hossz
   double abs(void) { return sqrt(real * real + imag * imag); }
/ konjugált, új komplex számot hoz létre
   Complex conjugalt(void) { return Complex(real, -imag); }
// felülbírált operátorok
   // értékadó operátor
   Complex& operator=(const Complex& c) {
   // a this mutato az aktuális objektumra mutat
   real = c.real; imag = c.imag; return *this; }
// növelés
   Complex& operator+=(const Complex c) {
   real += c.real; imag += c.imag; return *this; }
// összeadás
friend Complex& operator+(const Complex c1, const Complex c2);
// kiírás << operátor
   friend ostream& operator<<(ostream& os, Complex&);
} ;

komplex.cpp

// komplex számok
#include <iostream.h>
   #include "complex.h"
// komplex osztály friend függvényei
   ostream& operator<<(ostream& os, Complex& c) {
   os << '(' << c.real << ',' << c.imag << "i)";
   return os;
}
Complex& operator+(const Complex c1, const Complex c2) {
   Complex *c = new Complex();
   c->real = c1.real + c2.real;
   c->imag = c1.imag + c2.imag;
   return *c;
}

Komplex osztály használata

// teszt program komplex osztályhoz
#include "komplex.h"
int main(void) {
 Complex a; // paraméter nélküli konstruktor (0, 0i)
   cout << a << '\n'; // felülbírált << oprátor használata
Complex b(1.0); // két paraméteres konstruktor alapértelmezett képzetes rész    (1, 0i)
   cout << b << '\n';
   
 Complex c(0.5, 2.4); // két paraméteres konstruktor (0.5, 2.4i)
   cout << c << '\n';
   cout << c.abs() << '\n'; // abs függvény használata
   
 Complex d(c.conjugalt()); // objektumot használó konstruktor Complex d = c.conjugalt();    is lehetne
   cout << d << '\n';
 Complex e;
   e.setReal(4.1); e.setImag(1.8); // interface függvények 
   Complex f;
   f = d + e; // komplex számok összege
   cout << f << '\n';
   return 0;
 }

Utolsó módosítás: 2017. március 9., csütörtök, 15:01