Чтение онлайн

на главную

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

Исходный файл

use.cpp
содержит директивы
#include
для вставки файла
my.h
, определение функции
main
для присвоения переменной
foo
значения
7
и вывода ее на печать с помощью функции
print_foo
, а также для вывода значения
99
с помощью функции
print
. Обратите внимание на то, что файл
use.cpp
не содержит директивы
#include std_lib_facilities.h
,
поскольку он не использует явно ни одну из его сущностей.

Скомпилируйте эти файлы и запустите их. Для того чтобы увидеть результаты вывода на печать в системе Windows, в проект следует включить функции

use.cpp
и
my.cpp
и использовать в файле
use.cpp
код
{ char cc; cin>>cc; }
.

2. Напишите три функции:

swap_v(int,int)
,
swap_r(int&,int&)
и
swap_cr(const int&,const int&)
. Каждая из них должна иметь тело

{ int temp; temp = a, a=b; b=temp; }

где

a
и
b
— имена аргументов.

Попробуйте вызвать каждую из этих функций, как показано ниже.

int x = 7;

int y =9;

swap_?(x,y); // замените знак ? буквами v, r или cr

swap_?(7,9);

const int cx = 7;

const int cy = 9;

swap_?(cx,cy);

swap_?(7.7,9.9);

double dx = 7.7;

double dy = 9.9;

swap_?(dx,dy);

swap_?(dx,dy);

Какие функции и вызовы будут скомпилированы и почему? После каждой скомпилированной перестановки выведите на экран значения аргументов, чтобы убедиться, что они действительно поменялись местами. Если результат вас удивит, обратитесь к разделу 8.6.

3. Напишите программу, использующую единственный файл, содержащий пространства имен

X
,
Y
и
Z
, так, чтобы функция
main
, приведенная ниже, работала правильно.

int main

{

X::var = 7;

X::print; // выводим переменную var из пространства имен X

using namespace Y;

var = 9;

print; // выводим переменную var из пространства имен Y

{ using Z::var;

using Z::print;

var = 11;

print; // выводим
переменную var из пространства имен Z

}

print; // выводим переменную var из пространства имен Y

X::print; // выводим переменную var из пространства имен X

}

Каждое пространство имен должно содержать определение переменной

var
и функции
print
, выводящей соответствующую переменную
var
в поток
cout
.

Контрольные вопросы

1. В чем заключается разница между объявлением и определением?

2. Как синтаксически отличить объявление функции от определения функции?

3. Как синтаксически различить объявление переменной от определения переменной?

4. Почему функции из программы, имитирующей работу калькулятора в главе 6, нельзя использовать, не объявив их заблаговременно?

5. Чем является инструкция

int a;
определением или просто объявлением?

6. Почему следует инициализировать переменные при их объявлении?

7. Из каких элементов состоит объявление функции?

8. Какую пользу приносит включение файлов?

9. Для чего используются заголовочные файлы?

10. Какую область видимости имеет объявление?

11. Перечислите разновидности областей видимости. Приведите пример каждой из них.

12. В чем заключается разница между областью видимости класса и локальной областью видимости?

13. Почему программист должен минимизировать количество глобальных переменных?

14. В чем заключается разница между передачей аргумента по значению и передачей аргумента по ссылке?

15. В чем заключается разница между передачей аргумента по значению и передачей по константной ссылке?

16. Что делает функция

swap
?

17. Следует ли определять функцию с параметром типа

vector<double>
, передаваемым по значению?

18. Приведите пример неопределенного порядка выполнения вычислений. Какие проблемы создает неопределенный порядок вычислений?

19. Что означают выражения

x&&y
и
x||y
?

20. Соответствуют ли стандарту языка С++ следующие конструкции: функции внутри функций, функции внутри классов, классы внутри классов, классы внутри функций?

21. Что входит в активационную запись?

22. Что такое стек вызовов и зачем он нужен?

23. Для чего нужны пространства имен?

24. Чем пространство имен отличается от класса?

25. Объясните смысл объявления

using
.

26. Почему следует избегать директив

using
в заголовочных файлах?

27. Опишите пространство имен

std
.

Термины

Упражнения

Поделиться:
Популярные книги

Генерал Империи

Ланцов Михаил Алексеевич
4. Безумный Макс
Фантастика:
альтернативная история
5.62
рейтинг книги
Генерал Империи

Приручитель женщин-монстров. Том 1

Дорничев Дмитрий
1. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 1

Виконт. Книга 1. Второе рождение

Юллем Евгений
1. Псевдоним `Испанец`
Фантастика:
фэнтези
боевая фантастика
попаданцы
6.67
рейтинг книги
Виконт. Книга 1. Второе рождение

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Магия чистых душ 3

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Магия чистых душ 3

Шипучка для Сухого

Зайцева Мария
Любовные романы:
современные любовные романы
8.29
рейтинг книги
Шипучка для Сухого

Метатель. Книга 2

Тарасов Ник
2. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель. Книга 2

Отмороженный 5.0

Гарцевич Евгений Александрович
5. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный 5.0

Кодекс Охотника. Книга XIII

Винокуров Юрий
13. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XIII

Деспот

Шагаева Наталья
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Деспот

Огненный князь 6

Машуков Тимур
6. Багряный восход
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 6

Ваше Сиятельство 5

Моури Эрли
5. Ваше Сиятельство
Фантастика:
городское фэнтези
аниме
5.00
рейтинг книги
Ваше Сиятельство 5

"Фантастика 2024-5". Компиляция. Книги 1-25

Лоскутов Александр Александрович
Фантастика 2024. Компиляция
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Фантастика 2024-5. Компиляция. Книги 1-25

Поступь Империи

Ланцов Михаил Алексеевич
7. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Поступь Империи