Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Исходные тексты примеров. Операции и дружественные операции

Операции и дружественные операции

 

Последняя программа использовала функции-элементы и дружественную функцию, которые реализовали действия, выполняемые в стандартных типах с помощью операций вроде = и +. Подход типичен для языков C и Pascal, потому что эти языки не поддерживают определяемые пользователем операции. В отличии от них C++ позволяет вам объявлять операции и дружественные операции. Эти операции включают в себя: +, -, *, /, %, ==,!=, <=, <, >=, >, +=, -=, *=, /=, %=, [], (), << и >>. Обратитесь к описанию языка C++, где обсуждаются детали определения этих операций. С++ трактует операции и дружественные операции как специальный тип функций-элементов и дружественных функций.

Общий синтаксис для объявления операций и дружественных операций:

 

class className

{

public:

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

// функции-элементы

// унарная операция

returnType operator operatorSymbol();

// бинарная операция

returnType operator operatorSymbol(operand);

// унарная дружественная операция

friend returnType operator operatorSymbol(operand);

// бинарная дружественная операция

friend returnType operator operatorSymbol(firstOperand, secondOperand);

};

 

Пример 10:

 

class String

{

protected:

char *str;

int num;

public:

String();

~String();

// другие функции-элементы

// операция присваивания

String& operator =(String& s);

String& operator +=(String& s);

// операции конкатенации

friend String& operator +(String& s1, String& s2);

friend String& operator +(const char* s1, String& s2);

friend String& operator +(String& s1, const char* s2);

// операции отношения

friend int operator >(String& s1, String& s2);

friend int operator =>(String& s1, String& s2);

friend int operator <(String& sl, String& s2);

friend int operator <=(String& sl, String& s2);

friend int operator ==(String& s1, String& s2);

friend int operator!=(String& sl, String& s2);

};

 

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

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

 

 

(Листинг 8.1. исходный текст программы RECT.CPP

// Программа C++, иллюстрирующая использование класса.

// Программа моделирует прямоугольник.)

// Листинг 8.2. Исходный текст программы ARRAY.CPP

// Программа демонстрируюет использование конструкторов и деструкторов:

// - создает динамический массив (объект),

// - присваивает значения элементам динамического массива,

// - выводит значения элементов динамического массива,

// - удаляет динамический массив.

 

 

// Листинг 8.3. Исходный текст программы CIRCLE.CPP

// Простой пример иерархии классов.

 

 

// Листинг 8.4. Исходный текст программы VIRTUAL.CPP

// Программа демонстрирует использование виртуальных функций

// для моделирования квадратов и прямоугольников и вывода их

// размеров и площади

 

 

<== предыдущая лекция | следующая лекция ==>
Правило виртуальной функции | Вопросы и ответы. Что случится, если я объявлю конструктор по умолчанию, конструктор копии и другие конструкторы в защищенной области.
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 440; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.