лекции программирование / polevoy_cpp_2012_spring_lecture_05
.pdf.h не должен содержать
•определения обычных функций
•определения данных
•определения агрегатов
•неименованные пространства имен
10.03.2010 |
cppNewb.ru |
21 |
Использование заголовочных файлов в проектах
•включайте все необходимое
•минимизируйте число включений
•включайте заголовочные файлы в
порядке увеличения общности
–локальные
–общеупотребительные
–стандартные
•разделяйте группы заголовков
10.03.2010 |
cppNewb.ru |
22 |
Бинарный интерфейс компонент
•соглашение о параметрах вызова
•Си-соглашение
extern “C”
{
// source code
}
10.03.2010 |
cppNewb.ru |
23 |
l-value
•именующее выражение, ссылается на объект (м.б. const)
•может стоять в левой части оператора
присваивания (если не const)
пример:
int num(1); num = 5;
*(p + 15)
10.03.2010 |
cppNewb.ru |
24 |
r-value
• не l-value
пример:
5 |
//< литерал |
a + b //< временные объекты
new int |
//< новый объект |
string(“0”) //< временный объект
s.size() |
//< вызов функции |
10.03.2010 |
cppNewb.ru |
25 |
Пространства имен (namespace)
•логически группирует объявления
•определяет область видимости
•могут быть вложенными
10.03.2010 |
cppNewb.ru |
26 |
Создание пространства имен
namespace имя_пространства_имен
{
// объявления и определения
}
10.03.2010 |
cppNewb.ru |
27 |
Создание пространства имен
пример:
namespace misis
{
// Узнать число групп. int getGroupsCount();
}
10.03.2010 |
cppNewb.ru |
28 |
Доступ к именам в пространстве
•доступ через оператор разрешения области видимости ::
имя_пространства_имен::имя_члена
пример:
std::cout
10.03.2010 |
cppNewb.ru |
29 |
Глобальное пространство имен
•все, что не лежит в собственном пространстве имен
•доступ через :: (можно опускать)
10.03.2010 |
cppNewb.ru |
30 |