КАТЕГОРИИ: Архитектура-(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; Просмотров: 465; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |