🗊Презентация Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування

Нажмите для полного просмотра!
Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №1Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №2Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №3Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №4Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №5Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №6Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №7Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №8Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №9Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №10Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №11Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №12Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №13Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №14Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №15Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №16Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №17Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №18Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №19Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №20Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №21Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №22Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №23Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №24Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №25Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №26Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування, слайд №27

Содержание

Вы можете ознакомиться и скачать презентацию на тему Перевантаження операторів та функцій в С++. Лекція 3. Об’єктно-орієнтоване програмування. Доклад-сообщение содержит 27 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1






Лекція №3. Перевантаження операторів та функцій в С++
Описание слайда:
Лекція №3. Перевантаження операторів та функцій в С++

Слайд 2





Перевантаження функцій
Перевантажені функції – це функції з одним й тим же ім'ям, що мають різні списки параметрів. Параметри можуть вирізнятися типами та/або кількістю. Тип повертаємого функцією значення до уваги не береться
Описание слайда:
Перевантаження функцій Перевантажені функції – це функції з одним й тим же ім'ям, що мають різні списки параметрів. Параметри можуть вирізнятися типами та/або кількістю. Тип повертаємого функцією значення до уваги не береться

Слайд 3





Приклад
	void f(int);
	void f(char);
	void f(long);
	void f(float, int);
	void f(int, int, int);
Описание слайда:
Приклад void f(int); void f(char); void f(long); void f(float, int); void f(int, int, int);

Слайд 4





Важливо!
Функції, що перевантажуються, не повинні мати співпадаючі списки параметрів (в тому числі і при використанні параметрів за замовчуванням).
Описание слайда:
Важливо! Функції, що перевантажуються, не повинні мати співпадаючі списки параметрів (в тому числі і при використанні параметрів за замовчуванням).

Слайд 5





Вибір перевантаженої функції
	Якщо визначені декілька функцій з однаковим ім'ям та різними списками параметрів (перевантажені функції) і в програмі зустрічається виклик функції, компілятор повинен вибрати одну з перевантажених функцій. Існує певний алгоритм вибору функцій, у відповідності з яким вибирається функція, яка найкращим чином відповідає виклику. Якщо не буде встановлена відповідність жодній з перевантажений функцій чи буде встановлена неоднозначна відповідність, на етапі компіляції генерується повідомлення про помилку.
Описание слайда:
Вибір перевантаженої функції Якщо визначені декілька функцій з однаковим ім'ям та різними списками параметрів (перевантажені функції) і в програмі зустрічається виклик функції, компілятор повинен вибрати одну з перевантажених функцій. Існує певний алгоритм вибору функцій, у відповідності з яким вибирається функція, яка найкращим чином відповідає виклику. Якщо не буде встановлена відповідність жодній з перевантажений функцій чи буде встановлена неоднозначна відповідність, на етапі компіляції генерується повідомлення про помилку.

Слайд 6





Правила порівняння
Точні збіги
Розширення
Стандартні перетворення 
Перетворення, що потребують тимчасові змінні
	параметр визначений як посилання, а аргумент потребує перетворення (наприклад, перетворення з float в int&) чи заданий виразом, значення якого не може бути змінено.
Перетворення, визначені користувачем
Описание слайда:
Правила порівняння Точні збіги Розширення Стандартні перетворення Перетворення, що потребують тимчасові змінні параметр визначений як посилання, а аргумент потребує перетворення (наприклад, перетворення з float в int&) чи заданий виразом, значення якого не може бути змінено. Перетворення, визначені користувачем

Слайд 7





Приклади
void print(int);
void print(const char *);
void print(double);
void print(long);
void print(char);
char c; int i; short s; float f;
print(c);		// правило 1; викликається print(char)
print(i);			// правило 1; викликається print(int)
print(s);		// правило 2; викликається print(int)
print(f);		// правило 2; викликається print(double)
print(”a<number>”);		// правило 1; викликається print(char)
print(49);		// правило 1; викликається print(int)
Описание слайда:
Приклади void print(int); void print(const char *); void print(double); void print(long); void print(char); char c; int i; short s; float f; print(c); // правило 1; викликається print(char) print(i); // правило 1; викликається print(int) print(s); // правило 2; викликається print(int) print(f); // правило 2; викликається print(double) print(”a<number>”); // правило 1; викликається print(char) print(49); // правило 1; викликається print(int)

Слайд 8





Приклад з помилкою
void f(int, float);
void f(float, int);
	Виклик, який приведе к генерації повідомлення про помилку (неоднозначний вибір):
f(1.5, 1.5);
Описание слайда:
Приклад з помилкою void f(int, float); void f(float, int); Виклик, який приведе к генерації повідомлення про помилку (неоднозначний вибір): f(1.5, 1.5);

Слайд 9





Перевантаження операторів
	Перевантаження оператора полягає в зміні сенсу оператора (наприклад, оператора плюс (+), який звичайно в C++ використовується для додавання) при використанні його з певним класом.
Описание слайда:
Перевантаження операторів Перевантаження оператора полягає в зміні сенсу оператора (наприклад, оператора плюс (+), який звичайно в C++ використовується для додавання) при використанні його з певним класом.

Слайд 10





Оператори, дозволені до перевантаження
Описание слайда:
Оператори, дозволені до перевантаження

Слайд 11





Оператори, заборонені до перевантаження
	Існують також оператори, заборонені до перевантаження. Зміна їх змісту зруйнувало би логіку програми. До таких операторів належать 
	::  (оператор дозволу області видимості),
 	.    (“точка” — оператор доступу до члена класу), 
	?:  (тернарний оператор), 
	.*  (доступ до розіменованого вказівника-члена класу),   
	sizeof, typeid, static_cast,  dynamic_cast,  const_cast  і  reinterpret_cast.  
	
	Крім  того,  не  рекомендується перевантажувати логічні оператори && і ||, оскільки на їхні перевантажені версії не поширюється правило скорочених обчислень логічних виразів.
Описание слайда:
Оператори, заборонені до перевантаження Існують також оператори, заборонені до перевантаження. Зміна їх змісту зруйнувало би логіку програми. До таких операторів належать :: (оператор дозволу області видимості), . (“точка” — оператор доступу до члена класу), ?: (тернарний оператор), .* (доступ до розіменованого вказівника-члена класу), sizeof, typeid, static_cast, dynamic_cast, const_cast і reinterpret_cast. Крім того, не рекомендується перевантажувати логічні оператори && і ||, оскільки на їхні перевантажені версії не поширюється правило скорочених обчислень логічних виразів.

Слайд 12





Синтаксис операторних функцій
тип_значення_що_повертається operator символ_операції(параметри)
{
   ...
}
	Наприклад, операторна функція, що перевантажує операцію +, називається operator+().
Операторні функції повинні мати прямий доступ до членів 
класу. Отже, необхідно, щоб вони були або членами класу, 
або дружніми функціями.
Описание слайда:
Синтаксис операторних функцій тип_значення_що_повертається operator символ_операції(параметри) { ... } Наприклад, операторна функція, що перевантажує операцію +, називається operator+(). Операторні функції повинні мати прямий доступ до членів класу. Отже, необхідно, щоб вони були або членами класу, або дружніми функціями.

Слайд 13





Обмеження, що супроводжують застосування перевантажених операторів
1. Перевантажені функції не можуть змінити пріоритет операторів.
2. Кількість операндів фіксована: жодного, один чи два.
3. Значення операндів не можна задавати за замовчуванням.
Описание слайда:
Обмеження, що супроводжують застосування перевантажених операторів 1. Перевантажені функції не можуть змінити пріоритет операторів. 2. Кількість операндів фіксована: жодного, один чи два. 3. Значення операндів не можна задавати за замовчуванням.

Слайд 14





ПЕРЕВАНТАЖЕННЯ УНАРНИХ ОПЕРАТОРІВ ЗА ДОПОМОГОЮ ФУНКЦІЙ-ЧЛЕНІВ
Оператори можуть бути унарними і бінарними. 
Унарний оператор має один операнд, а бінарний —  два.
Нагадаємо, що до унарних операторів, що 
перевантажуються, належать такі оператори, як +, -, ++, --, 
&, ~ і !.
До бінарних операторів, що перевантажуються, належать 
всі інші оператори, перераховані в приведеній вище таблиці.
Операторні  функції-члени, що  перевантажують  унарний  
оператор, мають  одну  особливість: їх  операнди 
передаються неявно за допомогою вказівника this. Отже, 
така функція-член класу не має явних параметрів.
Описание слайда:
ПЕРЕВАНТАЖЕННЯ УНАРНИХ ОПЕРАТОРІВ ЗА ДОПОМОГОЮ ФУНКЦІЙ-ЧЛЕНІВ Оператори можуть бути унарними і бінарними. Унарний оператор має один операнд, а бінарний — два. Нагадаємо, що до унарних операторів, що перевантажуються, належать такі оператори, як +, -, ++, --, &, ~ і !. До бінарних операторів, що перевантажуються, належать всі інші оператори, перераховані в приведеній вище таблиці. Операторні функції-члени, що перевантажують унарний оператор, мають одну особливість: їх операнди передаються неявно за допомогою вказівника this. Отже, така функція-член класу не має явних параметрів.

Слайд 15





Унарні оператори “плюс” і “мінус”
class TComplex
 {
    double Re;    double Im;
 public:
    TComplex(double x, double y){Re=x;Im=y;}
    TComplex(TComplex& z){ Re = z.Re; Im = z.Im;}
    ~TComplex(){}
    void print();
    TComplex operator-() {Re = -Re; Im = -Im; return *this;}
 };
 int main()
 {
    TComplex z(1,1),u(0,0);
    z.print();
    u=-z;
    u.print();
	getch();     return 0;
 }
 void TComplex::print()
 {  cout<<"("<<Re<<", "<<Im<<")\n"; }
Описание слайда:
Унарні оператори “плюс” і “мінус” class TComplex { double Re; double Im; public: TComplex(double x, double y){Re=x;Im=y;} TComplex(TComplex& z){ Re = z.Re; Im = z.Im;} ~TComplex(){} void print(); TComplex operator-() {Re = -Re; Im = -Im; return *this;} }; int main() { TComplex z(1,1),u(0,0); z.print(); u=-z; u.print(); getch(); return 0; } void TComplex::print() { cout<<"("<<Re<<", "<<Im<<")\n"; }

Слайд 16





Оператори інкремента і декремента
TComplex& operator++()
    {	++Re; ++Im;
        printf("Префіксна форма ++ \n");
        return *this;
    }
const TComplex operator++(int i)
    {
        ++Re;  ++Im;
        printf("Постфіксна форма ++ %d\n",i);
        return *this;
    }
TComplex& operator--()
    {
        --Re;   --Im;
        printf("Префіксна форма -- \n");
        return *this;
    }
const TComplex operator--(int i)
    {
        --Re;  --Im;
        printf("Постфіксна форма -- %d\n",i);
        return *this;
    }
Описание слайда:
Оператори інкремента і декремента TComplex& operator++() { ++Re; ++Im; printf("Префіксна форма ++ \n"); return *this; } const TComplex operator++(int i) { ++Re; ++Im; printf("Постфіксна форма ++ %d\n",i); return *this; } TComplex& operator--() { --Re; --Im; printf("Префіксна форма -- \n"); return *this; } const TComplex operator--(int i) { --Re; --Im; printf("Постфіксна форма -- %d\n",i); return *this; }

Слайд 17






int main()
 {
    TComplex z(1,1);
    ++z;
    z.print();
    z++;
    z.print();
    --z;
    z.print();
    z--;
    z.print();
    return 0;
 }
Якщо символ операції ++ стоїть перед операндом, 
викликається операторна функція operator++(), якщо після —  
операторна  функція  operator++(int i).  Змінна  i  відіграє  роль  
прапора,  що  повідомляє компілятору, що дана функція перевантажує 
постфіксну форму оператора інкремента і декремента.
Описание слайда:
int main() { TComplex z(1,1); ++z; z.print(); z++; z.print(); --z; z.print(); z--; z.print(); return 0; } Якщо символ операції ++ стоїть перед операндом, викликається операторна функція operator++(), якщо після — операторна функція operator++(int i). Змінна i відіграє роль прапора, що повідомляє компілятору, що дана функція перевантажує постфіксну форму оператора інкремента і декремента.

Слайд 18





Унарні оператори !, & і ~
Оператори заперечення (!), взяття адреси (&) і побітового заперечення (~)  допускають перевантаження, але
не мають універсальних альтернатив, що варто було б реалізувати. Їх можна перевантажувати, наприклад, для
підвищення наочності програми. Скажемо, за допомогою оператора ! можна позначати операцію звертання
матриці,  а  за  допомогою  символу ~ —  її    транспонування.  Щоправда,  застосування  тильди  закріплене  за
деструкторами, тому  варто  виявляти  обережність, щоб  не  створити  плутанину. У  будь-якому  випадку  зміст
перевантаження операторів залежить від конкретної задачі.
Описание слайда:
Унарні оператори !, & і ~ Оператори заперечення (!), взяття адреси (&) і побітового заперечення (~) допускають перевантаження, але не мають універсальних альтернатив, що варто було б реалізувати. Їх можна перевантажувати, наприклад, для підвищення наочності програми. Скажемо, за допомогою оператора ! можна позначати операцію звертання матриці, а за допомогою символу ~ — її транспонування. Щоправда, застосування тильди закріплене за деструкторами, тому варто виявляти обережність, щоб не створити плутанину. У будь-якому випадку зміст перевантаження операторів залежить від конкретної задачі.

Слайд 19





Перевантаження оператора ->
 class TClass
 {
    int n; int counter;
 public:
    TClass(int x){n=x;counter=0;}
    TClass* operator->();
    int get(void) { return n;}
    int ref(void) { return counter; }
 };
TClass* TClass::operator ->()
 {
    counter++;
    return this;
 }
int main()
 { TClass a(1), b(2);
    printf("n = %d \n",a->get());
    printf("n = %d \n",b->get());
    printf("n = %d \n",a->get());
    printf("counter = %d \n",a->ref());
    printf("counter = %d \n",b->ref());
getch();
    return 0;
 }
Описание слайда:
Перевантаження оператора -> class TClass { int n; int counter; public: TClass(int x){n=x;counter=0;} TClass* operator->(); int get(void) { return n;} int ref(void) { return counter; } }; TClass* TClass::operator ->() { counter++; return this; } int main() { TClass a(1), b(2); printf("n = %d \n",a->get()); printf("n = %d \n",b->get()); printf("n = %d \n",a->get()); printf("counter = %d \n",a->ref()); printf("counter = %d \n",b->ref()); getch(); return 0; }

Слайд 20





ПЕРЕВАНТАЖЕННЯ БІНАРНИХ ОПЕРАТОРІВ ЗА ДОПОМОГОЮ ФУНКЦІЙ-ЧЛЕНІВ
Бінарний  оператор  має  два  операнди. Його  виклик  виконується  об'єктом, розташованим  у  лівій  частині
оператора. Отже, бінарний оператор
	a+b
еквівалентний такому оператору.
	a.operator+(b)
Таким чином, бінарна операторна функція-член повинна має тільки один параметр, що задає другий операнд
Вказівник this на перший операнд вона одержує неявно.
Для того щоб бінарну операторну функцію можна було застосовувати усередині виразів, необхідно, щоб
вона повертала об'єкт свого класу.
Описание слайда:
ПЕРЕВАНТАЖЕННЯ БІНАРНИХ ОПЕРАТОРІВ ЗА ДОПОМОГОЮ ФУНКЦІЙ-ЧЛЕНІВ Бінарний оператор має два операнди. Його виклик виконується об'єктом, розташованим у лівій частині оператора. Отже, бінарний оператор a+b еквівалентний такому оператору. a.operator+(b) Таким чином, бінарна операторна функція-член повинна має тільки один параметр, що задає другий операнд Вказівник this на перший операнд вона одержує неявно. Для того щоб бінарну операторну функцію можна було застосовувати усередині виразів, необхідно, щоб вона повертала об'єкт свого класу.

Слайд 21





Перевантаження бінарного оператора +
class TComplex
 {
    double Re;
    double Im;
 public:
    TComplex(double x, double y){Re=x;Im=y;}
    TComplex(TComplex& z){ Re = z.Re; Im = z.Im;}
    ~TComplex(){}
    void print();
    TComplex operator+(TComplex z)
    {
        TComplex w(0,0);
        w.Re = Re+z.Re;
        w.Im = Im+z.Im;
        return w;
    }
};
 int main()
 {
    TComplex u(1,1),v(2,2),z(0,0);
    z=u+v;
    z.print();
    return 0;
 }
Описание слайда:
Перевантаження бінарного оператора + class TComplex { double Re; double Im; public: TComplex(double x, double y){Re=x;Im=y;} TComplex(TComplex& z){ Re = z.Re; Im = z.Im;} ~TComplex(){} void print(); TComplex operator+(TComplex z) { TComplex w(0,0); w.Re = Re+z.Re; w.Im = Im+z.Im; return w; } }; int main() { TComplex u(1,1),v(2,2),z(0,0); z=u+v; z.print(); return 0; }

Слайд 22





Перевантаження оператора присвоювання
class TArray
 {
    int *p;
    int size;
 public:
    TArray(long n, int x);
    TArray(TArray&);
    TArray& operator=(TArray& X);
    void view();
 };
 int main()
 {
    TArray x(10,1),y(10,0);
    x.view();
    y = x;
    y.view();
getch();
    return 0;
}
 TArray::TArray(long n, int x)
 {
    size = n;
    p = new int[size];
    for (long i=0; i<size; i++)p[i] = x;
 }
Описание слайда:
Перевантаження оператора присвоювання class TArray { int *p; int size; public: TArray(long n, int x); TArray(TArray&); TArray& operator=(TArray& X); void view(); }; int main() { TArray x(10,1),y(10,0); x.view(); y = x; y.view(); getch(); return 0; } TArray::TArray(long n, int x) { size = n; p = new int[size]; for (long i=0; i<size; i++)p[i] = x; }

Слайд 23





Перевантаження оператора присвоювання
 TArray::TArray(TArray& X)
 {
    size=X.size;
    p = new int[size];     // Глибоке копіювання
    for (long i=0; i<X.size; i++) p[i] = X.p[i];
    
 }
 void TArray::view()
 {
     for(long i=0; i<size; i++) printf("%d ",p[i]);
 }
 TArray& TArray::operator=(TArray& X)
 {
    if(this == &X) return *this; // Перевірка самоприсвоювання.
    if(size==X.size)             //  Глибоке копіювання
                                 // (вказівник не копіюється!)
    for (long i=0; i<X.size; i++) p[i] = X.p[i];
    else printf(" Size ! \n");
    printf("\n");
    return *this;
 }
Описание слайда:
Перевантаження оператора присвоювання TArray::TArray(TArray& X) { size=X.size; p = new int[size]; // Глибоке копіювання for (long i=0; i<X.size; i++) p[i] = X.p[i]; } void TArray::view() { for(long i=0; i<size; i++) printf("%d ",p[i]); } TArray& TArray::operator=(TArray& X) { if(this == &X) return *this; // Перевірка самоприсвоювання. if(size==X.size) // Глибоке копіювання // (вказівник не копіюється!) for (long i=0; i<X.size; i++) p[i] = X.p[i]; else printf(" Size ! \n"); printf("\n"); return *this; }

Слайд 24





Перевантаження скорочених операторів присвоювання
class TComplex
 {
    double Re;
    double Im;
 public:
    TComplex(double x, double y):Re(x),Im(y){ }
    TComplex(TComplex& z){ Re = z.Re; Im = z.Im;}
    ~TComplex(){}
    void print();
    const TComplex operator+=(const TComplex& z)  // Додавання
    {
        Re = Re+z.Re;
        Im = Im+z.Im;
        printf("Operator += \n");
        return *this;
    }
    const TComplex operator+(const TComplex& z)  // Додавання
    {
        TComplex w=*this;
w+=z;
        printf("Operator + \n");
        return w;
    }
 };
Описание слайда:
Перевантаження скорочених операторів присвоювання class TComplex { double Re; double Im; public: TComplex(double x, double y):Re(x),Im(y){ } TComplex(TComplex& z){ Re = z.Re; Im = z.Im;} ~TComplex(){} void print(); const TComplex operator+=(const TComplex& z) // Додавання { Re = Re+z.Re; Im = Im+z.Im; printf("Operator += \n"); return *this; } const TComplex operator+(const TComplex& z) // Додавання { TComplex w=*this; w+=z; printf("Operator + \n"); return w; } };

Слайд 25






int main()
 {
    TComplex u(1,1),v(2,2),z(3,3);
    u+=v;
    u.print();
    z=u+v;
    z.print();
getch();
    return 0;
 }
Описание слайда:
int main() { TComplex u(1,1),v(2,2),z(3,3); u+=v; u.print(); z=u+v; z.print(); getch(); return 0; }

Слайд 26





ПЕРЕВАНТАЖЕННЯ БІНАРНИХ ОПЕРАТОРІВ ЗА ДОПОМОГОЮ ДРУЖНІХ ФУНКЦІЙ
class TComplex
 {
     double Re;
     double Im;
 public:
     TComplex(double x, double y):Re(x),Im(y){ }
     TComplex(TComplex& z){ Re = z.Re; Im = z.Im;}
     ~TComplex(){}
     friend void print(TComplex z);
     friend TComplex operator+(TComplex x, TComplex y);
 };
 int main()
 {
     TComplex u(1,1),v(2,2),z(0,0);
     z=u+v;
     print(z);
 getch();
     return 0;
 }
Описание слайда:
ПЕРЕВАНТАЖЕННЯ БІНАРНИХ ОПЕРАТОРІВ ЗА ДОПОМОГОЮ ДРУЖНІХ ФУНКЦІЙ class TComplex { double Re; double Im; public: TComplex(double x, double y):Re(x),Im(y){ } TComplex(TComplex& z){ Re = z.Re; Im = z.Im;} ~TComplex(){} friend void print(TComplex z); friend TComplex operator+(TComplex x, TComplex y); }; int main() { TComplex u(1,1),v(2,2),z(0,0); z=u+v; print(z); getch(); return 0; }

Слайд 27






TComplex operator+(TComplex x, TComplex y)
 {
    TComplex w(0,0);
    w.Re = x.Re+y.Re;
    w.Im = x.Im+y.Im;
    return w;
 }
 void print(TComplex z)
 {
   cout<<"("<<z.Re<<", "<<z.Im<<")\n";
 }
Описание слайда:
TComplex operator+(TComplex x, TComplex y) { TComplex w(0,0); w.Re = x.Re+y.Re; w.Im = x.Im+y.Im; return w; } void print(TComplex z) { cout<<"("<<z.Re<<", "<<z.Im<<")\n"; }



Похожие презентации
Mypresentation.ru
Загрузить презентацию