Complex sum ( Complex z , Complex y)

Float mod (Complex z)

Float image (Complex z)

Float real (Complex z)

{ return z.re; }

{ return z. im; }

{ return sqrt (z.re* z.re + z.im*z. im); }

{ z. re + =y. re;

z. im + =y. im;

return z; }

void main () {

Complex c1, c2, c3;

c1.define(3, 4); c2.define(5, 6); c3.define(0, 0);

float m= mod(c1);

cout<< ‘\n’<< m;

c3 = sum(c1, c2);

cout<<’\n’<< “ sum:” <<real(c3);

(image(c3)<0)? cout<< image (c3)<< ‘i’: cout<< ‘+’ <<image(c3)<<’i’;

}

Сложение в функции sum велось в одном из аргументов (z), с тем же успехом можно было использовать и y.

Сложение двух объектов выглядит симметрично, но для сложения данных (объектов) используется функция, а не операция ‘+’, что довольно нелепо.

Ниже мы рассмотрим и такую возможность С++ как перегрузку операций для переменных типа class.

Дружественные классы

Если все компонентные функции одного класса являются дружественными для другого класса, то класс является дружественным другому классу

Объявление дружественного класса:

Class X { …};

Class Y { … friend class X; … };

Все приватные и защищенные члены класса Y могут обрабатываться функциями класса X, то есть доступны в дружественном классе.

Дружественный класс может быть определен позже, нежели описан как дружественный:

Class X1 { … friend class X2;…};

Class X2 { …void f (…);… };

Конструкторы и деструкторы

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

Для многих объектов естественно требовать, чтобы они были инициированы (т.е. имели начальное значение, а не мусор) до начала их использования.

В С++ для упрощения процесса инициализации объектов предусмотрена специальная функция, называемая конструктором.

Конструктор – это компонентная функция, вызываемая автоматически при создании объекта класса и выполняющая необходимые инициализирующие действия.

1) Основное назначение – инициализация объектов.

- инициализация данных класса - задание им начальных

значений программно или по умолчанию,

- открытие файлов,

- перевод видеосистемы в графический режим

- вывод сообщения,

- инициализация объектов вспомогательных классов и. т. д.

2) Имя конструктора должно совпадать с именем класса.

3) Функция-конструктор не может возвращать результат, даже тип void не

допустим.

4) Функция автоматически вызывается при определении объекта, или при размещении в памяти объекта с помощью операции new.

5) Формат определения конструктора в теле класса:

< имя класса> (список формальных параметров)

{ операторы тела конструктора }

Конструктор, как и любая компонентная функция, может быть определен и вне тела класса, имея в теле класса прототип.

class T {

public:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: