Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Самоучитель С++ - Шилдт Г.

Шилдт Г. Самоучитель С++ — Спб.: БВХ-Петербург, 2003. — 688 c.
ISBN 5-7791-0086-1
Скачать (прямая ссылка): samouchitelc2003.djvu
Предыдущая << 1 .. 161 162 163 164 165 166 < 167 > 168 169 170 171 172 173 .. 206 >> Следующая

ГЛАВА 6
Повторение пройденного
1. class myclass {
int х, у ; public:
myclass {inti, int j) ( X = І; у = j; }
myclass!) { x = 0; у — 0; }
);
2. class myclass {
int x, y; public:
myclass (int і = 0, int j = 0) {x=i;y=j; }
3. В объявлении функции после появления аргумента по умолчанию не должно быть обычных аргументов.
Приложение В. Ответы на вопросы и решения упражнений _ 543
4. Функции нельзя перегружать, если их отличие только в том, что одна получает параметр по значению, а вторая — по ссылке. (Компилятор не в состоянии их отличить.)
5. Аргументы по умолчанию лучше использовать тогда, когда можно с уверенностью предположить, что при работе приложения одно или более значений будут встречаться чаще других. Аргументы по умолчанию лучше не использовать, когда такой уверенности нет.
6. Нет, поскольку нельзя инициализировать динамический массив. В этом классе имеется только один конструктор, которому требуется инициализация.
7. Конструктор копий — это особый конструктор, который вызывается при инициализации одного объекта другим. Такая инициализация имеет место в следующих трех случаях: когда один объект явно используется для инициализации другого, когда объект передается в функцию в качестве параметра, и когда в качестве возвращаемого значения функции создается временный объект.
Упражнения
6.2
1. // Перегрузка операторов * и / относительно класса coord
#include <iostream> using namespace std;
¦class coord {
int xf у; // значения координат public:
coord!) { X = 0; y— 0; }
COOrd (inti, int j) {x=i;y = j; } void get_xy(int &ir int &j) { і = x; j = y; } coord operator*(coord ob2); coord operator/(coord ob2);
1;
// Перегрузка оператора * относительно класса coord coord coord; : operator* (coordob2)
(
coord temp;
temp.x = x * ob2¦x; temp.у = у * оЪ2.у;
return temp;
)
544 _ _ _ Самоучитель C++
}} Перегрузка оператора / относительно' класса coord coord coord: : operator/ (coordob2)
{
coord tern^;
temp.x - x / ob2.x; temp, у = у / ob2.y;
return temp;
\
int main ()
і
і
coord ol (10, 10), o2(5, 3), o3;
int x, y;
o3 = ol * o2; o3.get_xy(x, y) ;
cout « " (ol * o2) X: '* << x « ", Y: " « у « "\n";
o3 = ol / o2 ;
o3.get_xy(x,y) ;
cout « "(ol / o2) X: << x C< ", Y: " « у « "\n";
return 0;
J
2. Так перегружать оператор % нежелательно, поскольку перегруженная версия оператора не связана с его традиционным использованием.
6.3
1. IJ Перегрузка операторов < и > относительно класса coord #include <iostream> using namespace std;
class coord {
int x, у; // значения координат public:
coord() ( x = 0; y= 0; }
coord(int i, int j) { x - i; y=j; }
void get_xy(int &i, int sj) { і = x; j = y; }
int operator<(coord ob2);
int operator>(coord ob2);
і _ i;
.// Перегрузка оператора < для класса coord int coord::operator<tcoord ob2)
Приложение В. Ответы на вопросы и решения упражнений_______________________________545
{
return х<оЬ2.х && у<оЬ2.у;
}
// Перегрузка оператора > для класса coord int coord::operator>(coord ob2)
{
return x>ob2,x && y>ob2.y;
}
int main()
{
coord ol(10, 10), o2(5f 3) ;
if(ol>o2) cout << "ol > o2\nM;
else cout << "ol <= o2\n";
if(ol<o2) cout << "ol < o2\n11;
else cout << "ol >= o2\n";
return 0;
)
6.4
1. // Перегрузка оператора -- относительно класса coord
ttinclude <iostream> using namespace std;
class coord {
int x, у; // значения координат pub1і с:
coord (} { x = 0; y= 0; }
coord(int і, int j) { x = і; у = j ; }
void get_xy(int &i, int &j) { i=x; j =y; }
coord operator-- (); // префиксная форма
coord operator-- [intnotused) ; // постфиксная форма
};
// Перегрузка префиксной формы оператора — для класса coord coord coord: : operator-- (>
{
x—; у—;
return *this;
!
// Перегрузка постфиксной формы оператора -- для класса coord coord coord: : operator— {intnotused)
546_
Самоучитель
{
х—; у—;
return *this;
1
intmain ( )
{
coord ol(10, 10} ;
int x, y;
ol-- ; // декремент объекта
ol.get_xy (x, y) ;
cout « " (ol—) X: " « x « Mf Y: " « у « M\n";
—ol; // декремент объекта ol.get_xy(xf y) ;
cout « — ol) X: " « X « ", Y: " « у « "W';
return 0;
і
2. // Перегрузка оператора 4- относительно класса coord
ttinclude <iostream>
using namespace std;
class coord {
Предыдущая << 1 .. 161 162 163 164 165 166 < 167 > 168 169 170 171 172 173 .. 206 >> Следующая