Программирование >>  Расширенная версия языка c++ 

1 ... 52 53 54 [ 55 ] 56 57 58 ... 227



Проверка

.материала главы

Теперь вам необходимо выполнить упражнения и ответить на

вопросы:

1. Перегрузите конструктор date() из раздела 5.1, пример 3 так, чтобы он имел параметр тип вспомните, чт me t - это тип данных,

определенный стандартными библиотечными функциями времени и даты компилятора C++.)

2. Что неправильно в следующем фрагменте? class samp {

int а; Г

public:

samp (int i) { a = i; } ...

( : . . . [ r . ,

samp x, у (10) ; .. , . j. : . - .

3. Приведите два довода в пользу того, почему вам могло бы потребоваться

перегрузить конструктор класса.

4. Какова основная форма конструктора копий?

5. Какой ти апий ведет к вызову конструктора копий?

6. Кратко объясните, зачем нужно ключевое слово overload, и почему оно

больше не употребляется.

7. Объясните, что такое аргумент по умолчанию?

8. Создайте функцию reverse() с двумя параметрами. Первый параметр

- это указатель на строку, порядок следования символов в которой, после возвращения функцией своего значения, должен быть заменен на обратный. Второй параметр count задает количество переставляемых в строке str символов. Значение count по умолчанию должно быть таким, чтобы в случае его задания функция меняла порядок следова-

ния символов в целой строке.

9. Что неправильно в следующем прототипе функции?

cha (char *str, int size = 0, char ch) ;



Проверка усвоения материала в целом

В этом разделе проверяется, хорошо ли вы усвоили материал этой и предыдущих глав.

1. Создайте функции ег(), которая получает дв а-ссылки на целые. Если первый аргумент больше второго, поменяйте их значения. В противном случае ничего делать не надо. Таким образом, порядок следования двух аргументов, используемых при вызове функции должен быть таким, чтобы всегда после возвращения функцией своего значения первый аргумент был меньше второго. Например, если дано

int х = 1, у = 0; order(х, у);

то после вызова функции х будет равен 0, а у будет равен

2. Почему следующие две перегруженные функции внутренне неоднозначны?

in int a) ; int f(int &a);

3. Объясните, почему использование аргумента по умолчанию связано с

перегрузкой функций.

4. Пусть дано следующее неполное описание класса, добавьте конструкторы так, чтобы оба объявления в функции main() были правильны.

(Подсказка: вам необходимо дважды перегрузить конструктор samp().)

class samp {

int a;

10. Приведите несколько причин появления неоднозначности при перегрузке

11. Что неправильно одюшем фрагменте?

voi иЫе *num, int divisor =1); i-

void compute (doiible *num) ; . -Г -

. . . , , .

compute ; . . .

12. При присваивании указателю адреса перегруженной функции, что определяет конкретную версию используемой функции?



int ma in О (

sap ob(88); инициализация объекта а значением 88

sam Wy [10] ; неинициализируе! ементный массив

...

5. Кратка ните, зачем нужны конструкторы копий.

public;

добавьте конструкторы in а(] { return a; }



1 ... 52 53 54 [ 55 ] 56 57 58 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика