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

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

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

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

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

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

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

{
Struct tin *p;
p = localtime (&t); day = p -> tmjfrtday; month = p -> tHi_mon;
Приложение В. Ответы на вопросы и решения упражнений _______ __ __ 539
year = р -> rm year;
}
int main()
{
// Образование даты с помощью строки date sdats ("11//1/S2") ;
/ / Образование даты с помощью трех целых date iriatedl, 1, 92} ;
/* Образование даты с помощью параметра типа tiine_t, что ведет к созданию объекта, использующего системную дату
V
date tdate (time(NULL) ) ;
sdate.show(); іdate.show(); tdate.show{);
return 0 ;
}
2. В классе samp определен только один конструктор — конструктор с параметром. Поэтому нельзя объявлять объект типа samp без параметра. (То есть инструкция samp х — это неправильное объявление.)
3. Первый довод в пользу перегрузки конструктора состоит в том, что такая перегрузка обеспечивает гибкость, позволяя вам выбрать в каждом конкретном случае наиболее подходящий конструктор. Другой довод в том, что перегрузка позволяет объявлять как инициализируемые, так и не инициализируемые объекты. Вам может потребоваться перегрузить конструктор для динамического выделения памяти под массив.
4. Ниже представлена основная форма конструктора копий:
имя класса (const имя_ класса ^объект) { тсло_хоаструктора.
)
5. Конструктор копий вызывается, когда имеет место инициализация, а именно: когда один объект явно используется для инициализации другого, когда объект передается в функцию в качестве параметра, когда создается временный объект при возвращении объекта функцией.
6. Ключевое слово overload является устаревшим. В ранних версиях C++ оно информировало компилятор о том, что функция будет перегружена. В современных компиляторах это ключевое слово не поддерживается.
540 __ Самоучитель C++
7. Аргумент по умолчанию — это значение, которое присваивается параметру функции при ее вызове, если при этом соответствующий аргумент функции не указан.
8. #include <iostream>
#include <cstring> using namespace std;
void reverse (char *str, int count — 0) ; int main (}
{
char *sl = "Это проверка"; char *s2 = "Мне нравится C++";
reverse (si) ; // Реверс всей строки reverse {s2, 7); // Реверс первых семи знаков
cout « si '\n'; coot << s2 <<- ’Yn" ;
return 0;
I
void reverse {char *str, int count)
{
int i, j; char temp;
if(lcount) count = strlen(str) — 1;
for(i=Or j=count; i<j i*-^f і ¦—) {
temp = str[ і ]; str[ і ] = s t г Г j ] ; str[ j ] - temp;
}
9. Все параметры, получающие аргументы по умолчанию, должны находиться правее параметров, не получающих таких аргументов.
10. Неоднозначность может возникнуть, когда по умолчанию происходит преобразование типа, а также при использовании параметра-ссылки или аргумента по умолчанию.
11. Пример неоднозначен, поскольку компилятор не может определить, какую версию функции compute() следует вызвать. Вызвать ли первую версию с аргументом по умолчанию divisor, или вторую — в которой функция получает только один параметр?
Приложение В. Ответы на вопросы и решения упражнений___________________________541
12. При получении адреса перегруженной функции с помощью указателя, конкретную ее версию определяет способ объявления указателя. То есть для всех перегруженных версий функции, адреса которых мы хотели бы получить, должна объявляться своя версия указателя.
Проверка усвоения материала в целом
1. #include <io5tream>
using namespace 5td;
void order {int &a, int fib)
{
int t ;
if (a<b) return;
¦else { // а и b меняются местами
t = a; a = b;
b — t;
і
і
int main ()
{
int x = 10, у = 5 ;
cout « "x: " « x « ", у: " << у « ’ \n '
order(x, y) ;
cout « "x: " « x « ", у: " « у « 1 \n ’ ;
return 0;
f
2. Синтаксис вызова функции, параметр которой передается по ссылке, идентичен синтаксису вызова функции, параметр которой передается по значению.
3. Аргумент по умолчанию, фактически, является компактной записью перегрузки функции, поскольку приводит к тому же результату. Например, инструкция
int flint a, int b = 0) ;
идентична следующим двум перегруженным функциям:
int f (intа) }
int f (inta, int b) ;
542_______________________________________________________Самоучитель C++
4. #include <iostream> using namespace std;
class samp { int a; public:
sampO { a = 0; } samp(int n) { a = n; } int get_a() { return a; }
};
int main {)
{
samp ob(88); samp obarray[10];
(( ...
>
5. Конструкторы копий необходимы, если программист хотел бы точно управлять процессом создания копий объекта. Это важно только в том случае, если создаваемые по умолчанию поразрядные копии по каким-либо причинам нежелательны.
Предыдущая << 1 .. 160 161 162 163 164 165 < 166 > 167 168 169 170 171 172 .. 206 >> Следующая