Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Основи програмування в C + +

Реферат Основи програмування в C + +





значена в класі як дружня, або у неї повинен бути хоча б один параметр типу клас (або посилання на клас).

Якщо для класу T введена операція-функція з наведеним вище заголовком і визначені два об'єкти A і B класу T, то вираз A * B інтерпретується як виклик функції operator * (A, B).

Розглянемо приклад. Реалізуємо перевантаження операції додавання для класу комплексних чисел. br/>

class comp

{float im; float real;

public:

comp (float i, float r)

{real = r;

im = i;}

comp operator + (Comp X)

{return comp (im + X.im, real + X.real);}

}

void main ()

{ ...

comp C1 (1.1), C2 (5,5), C3;

C3 = C1.operator + (C2)// Прямий виклик операції-функції. Не використовується. p> C3 = C1 + C2// Непрямий виклик операції-функції.

...

}


Компілятор за типами об'єктів С1 і С2 визначає, що необхідно реалізувати не просто додавання двох скалярів, як це буває в звичайному використанні операції +, а викликати перевантажену функцію operator +. Так як при визначенні класу поля im і real доступні функціям класу, є необхідність визначати тільки другий об'єкт (X в нашому прикладі).

У мові C + + потрібно, щоб операції присвоювання, індексації та непрямого звернення до полів класу (->) обов'язково визначалися як методи, тобто як функції-члени класу.

Коли лівий операнд операції є представником класу, перевантажену операцію потрібно визначати як метод цього класу.

Для багатьох операцій C + + існують свої особливості при перевантаженні (доопределение). Так, унарні операції перевизначаються з описом операції-функції без аргументу, наприклад:


class A

{ ...

A operator - () {Текст функції}

... }


Відповідно доопределение бінарної операції використовує опис операції-функції з одним аргументом, тому що другим є об'єкт, для якого викликана операція. Слід також пам'ятати, що операція присвоювання "=" може перевантажуватися тільки оголошенням методу без описателя static. Те ж відноситься до операцій "()" і "[]". p> Подивимося, як буде виглядати перевантаження операції привласнення для прикладу з комплексними числами.


comp & operator = ([const] comp & X)

{real = X.real;

im = X.im;

return * this;}


Якщо вказуємо const, то це показує, що в поточному стані повинен змінюватися всередині функції, а крім того, дозволяє обробляти константні об'єкти.

Операція присвоювання НЕ успадковується.


Константні єкти і константні методи


const Loc NK (0,0);// константний об'єкт

Після ініціалізації спроби зміни константного об'єкта відстежуються і присікаються компілятором.

Оголошення константної функції в тілі класу виглядає наступним чином:

Прототип const;

ПРАВИЛО:

Константні методи

1) не повинні міняти значення елементів класу;

2) не повинні викликати інші неконстантние методи класу.

Константні методи можуть застосовуватися як для константних, так і для неконстантних об'єктів.


Література


1. М.Уейт, С.Прата, Д.Мартін Мова Сі: Пер з англ.-М.: Світ, 1988.-463 с., Іл. p> 2. Уїнер Р. Мова Турбо Сі: Пер з англ.-М.: Світ, 1991.-384 с., іл.

3. Беррі Р., Мікінз Б. Мова Сі: введення для програмістів: Пер. з англ.-М.: Фінанси і статистика, 1988.-с., мул.

4. TURBO C + +. Borland International. Inc. 1990. br/>


Назад | сторінка 6 з 6





Схожі реферати:

  • Реферат на тему: Центральні банки, їх функції та операції
  • Реферат на тему: Практико-орієнтовані завдання як засіб реалізації прикладної спрямованості ...
  • Реферат на тему: Функції, операції та послуги комерційних банків, їх баланс і прибуток
  • Реферат на тему: Функції та операції Національного банку Республіки Казахстан як Центральног ...
  • Реферат на тему: Клас птахи, загальна характеристика класу