![]() |
|
Программирование >> Расширенная версия языка c++
Приложение В. Ответы опросы и решение жнвний 543 4. Функции нельзя перегружать, если их отличие только в том, что одна получает параметр по значению, а вторая - по ссылке. (Компилятор не в состоянии их отличить.) 5. Аргументы по умолчанию лучше использовать тогда, когда можно с уверенностью предположить, что при работе приложения одно или более значений будут встречаться чаще других. Аргументы по умолчанию лучше не использовать, когда такой уверенности нет. 6. Нет, поскольку нельзя инициализировать динамический массив. В этом классе имеется только один конструктор, которому требуется инициализация. 7. Конструктор копий - это особый конструктор, который вызывается при инициализации одного объекта другим. Такая инициализация имеет место в следующих трех случаях: когда один объект явно используется для инициализации другого, когда объект передается в функцию в качестве параметра, и когда в качестве возврашаемого значения функции создается временный объект. Упражнения 6.2 1. Перегрузка тсров * и / относительно класса coord #include <iostream> usin езрасе std; , .class coord { in X, у; значения координат public: coord!) X = y= 0; } coord (int i, int j) { x = i; у = j; } voi (int Si, in £j) { i = x; j = y; } coord operator*(coord ob2); coord operator/(coord ob2); , Перегрузка оператора относительно класса coord coor ator* (coordob2) coord temp; , ... temp.x = x * ob2.x; temp.у = у * оЬ2.у; return temp; 544 Самоучитель C++ Перегрузка оператора / относительно класса coord coord coord г : operator/ (coordоЬ2) I . ii-- coord temri.- . :.: >>- temp.x = x / оЬ2.х; it - .-. . .: return temp; int main coor (10, 10) (5, 3), o3; . , v- : . . с int X, y; . . . < o3 1 * o2; ... . - o3.get xy(x, cout (ol * o2) X: X , Y: у \n ; ol / o2; f..- o3.get xy (x, y) ; cou::< (ol / o2) , у \n ; return 0; 2. Так перегружать оператор % нежелательно, поскольку перегруженная версия оператора не связана с его традиционным использованием. 1. / / Перегрузка операторов < и > относительно класса coord #include !tream> using namespace class coord I int у; значения координат public: ( x = 0; 0; } coorddnt i, int j) = i; уj, } void int sj) I i = x; j y; } int ob2); Перегрузка оператора < для класса coord int ob2) Приложение В. Ответы на вопросы и решения упражнений 545 return х<оЬ2.х && у<оЬ2.у; Перегрузка оператора > для класса coord -. - . int coord::opeгator>(coord оЬ2) return x>ob2.x && y>ob2.y; int main() , л coord ol(10, 10), o2(5, 3) ; if(ol>o2 ol > o2\n ; : else cout ol <= o2\n ; if(ol<o2) cou ol < o2\n ; else cout ol >= o2\n ; return 0; 1. Перегрузка оператора - относительно класса coord ttinclude <iostream> using namespace std; class coord -1 int x, у; значения координат public: coord (} { x = 0-- 0; } coord i, int j) { x - i; у j; } void get xy(int &i, in ; { i = x; j = y; } coor or- (); префиксная форма coor dnt notused) ; постфиксная форма Перегрузка префиксной формы оператора - для класса coord coord { return Перегрузка постфиксной формы оператора -- для класса coord coord
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |