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