Просмотр кода
Идентификатор: de21cc11 Описание: Код загружен: 9 октября 2012, 20:40 (QW01_01)
#include <conio> #include <cmath> #include <iostream> using namespace std; class Num { protected: double re; public: Num(double data=0) { re = data; } double get() { return re; } double set(double data) { re = data; return re; } void show() { std::cout << re << "\n"; } Num clone() { return Num(re); } Num operator +(Num data) { return Num(re + data.get()); } Num operator +(double data) { return Num(re + data); } friend Num operator +(double a, Num &b) { return Num(a + b.get()); } /*Complex operator =(Num &a, Complex &b) { a.set(b.getRe()); return b.clone(); } */ }; class Complex : public Num { private: double im; public: Complex(double data=0, double b = 0) : Num(data) { im = b; } Complex (Num data) { re=data.get(); im =0; } Complex clone() { return Complex(re, im); } double getRe() { return Num::get(); } double setRe(double data) { return Num::set(data); } double getIm() { return im; } double setIm(double data) { im = data; return im; } void show() { std::cout << re << "+i*" << im << "\n"; } Complex operator +(Complex &x) { return Complex(re + x.getRe(), im + x.getIm()); } Complex operator +(Num &x) { return Complex(re + x.get(), im); } Complex operator +(double x) { return Complex(re + x, im); } friend Complex operator +(Num &a, Complex &b) { return Complex(a.get() + b.getRe(), b.getIm()); } friend Complex operator +(double a, Complex &b) { return Complex(a + b.getRe(), b.getIm()); } ~Complex() { }; }; void main() { Complex a(2, 4); Complex b(1); Complex c; Num d(3); Num f; f.show(); (d + 3).show(); (f + d + 1).show(); (1 + d).show(); cout << "------------\n"; c.show(); (a + b).show(); (a + 1).show(); (1 + a).show(); (a+d).show(); (d+a).show(); f=((Num)(d+a)); f.show(); c=f; c.show(); getch(); } // ---------------------------------------------------------------------------