Общество любителей CСтатьи

Ответы на некоторые вопросы по С++ (5 стр)

Автор:

140. Назовите причины, требующие разделения программ на части.
Удобней использовать.

141. Дайте определение термина «единица трансляции»?
(Transalation unit)
Исходный файл (cpp, cxx, C, ...) c подключенными заголовочными файлами
и другими файлами подключенными с помощью include.

142. Чем отличается файл с исходным текстом от единицы трансляции?
Файл с исходным текстом не обязательно является единицей трансляции.

143. Существуют ли в С++ конструкции, позволяющие идентифицировать отдельный модуль?
??? (подразумевается namespace?)

144. Какие способы сборки программы вы можете назвать?
Полная, частичная.

145. Что такое «объектный модуль»? Программа, которая «собирает» объектные модули в программу, называется _____________ ?
.obj. Линковщик (linker).

146. В чем заключается отличие аргумента «файл» от <файл> в директиве #include?
Локальные и глобальные инклуды (т.е. логическое разделение).
Отличается тем где компилятор пытается найти подключаемый файл в первую очередь.

147. Что такое ODR?
One Definition Rule (Правило Одного Определения).

148. Объясните, что такое «страж» включения и зачем он нужен.
В .h файлах, для того чтобы избежать повторного подключения пишут:
<blah_blah_blah.h>:
#ifndef BLAH_BLAH_BLAH__
#define BLAH_BLAH_BLAH__
...
#endif // BLAH_BLAH_BLAH__

149. Является ли интерфейс класса его определением?
Да.

150. Сколько определений класса может быть в единице трансляции?
Одно.

151. Сколько определений класса может быть в многофайловой программе?
Много.

152. Чем отличаются стандартные заголовки <string>, <string.h> и <cstring>?
STL. CRT. CRT.

153. Объясните суть идиомы Pimpl.
В классе хранится указатель на реализацию, реализация которого скрыта от пользователя (есть только forward definition).
Методы класса реализованы посредством класса реализации.

154. Что такое делегирование и как его можно использовать для повышения степени инкапсуляции?


155. Каким образом глобальную переменную, определенную в одной единице трансляции, сделать доступной в другой единице трансляции? А константу?
extern

156. Можно ли использовать слово extern при объявлении функций?
можно

157. Как локализовать объявление функции в файле?
использовать static или неименованные пространства имен

158. Чем отличается «внешнее» связывание от «внутреннего» связывания?
возможностью доступноступа извне

159. Что такое «спецификации компоновки»?


160. Какие объекты обладают внутренним связыванием по умолчанию?


161. Какие области видимости имен вы знаете?
Глобальные и нет.

162. Для чего используются пространства имен?
Для удобства (логическое выделение части функциональности). Для избежания конфликтов имен.

163. Чем отличаются именованные и неименованные пространства имен?


164. Могут ли пространства имен быть вложенными?
Да.

165. Для чего применяются алиасы пространства имен?
Для удобства. Для избежания конфликтов имен.

166. Как сделать члены пространства имен доступными в нескольких (в пределе — во всех) файлах программного проекта?
uses namespace a; // ???

167. Объясните разницу между статической и динамической инициализацией.
Инициализация статических переменных происходит до вызова main.
Инициализация статических переменных определенных внутри функции происходит не позже их первого использования.

168. В чем состоит проблема инициализации глобальных статических переменных?
В том, что порядок инициализации не известен.

169. Какие элементы класса можно объявлять статическими?
Методы, функции-члены, операторы. (за искл 175)

170. Можно ли объявить в классе статическую константу? А константный статический массив?
Да. Да. (см. 42, 52)

171. А какие статические поля можно инициализировать непосредственно в классе?
only const static integral data members

172. Как определяются статические поля? В какой момент работы программы выполняется инициализация статических полей?
struct A { static int sa; };
До вызова main (см. 167)

173. Сколько места в классе занимают статические поля ?
0

174. Чем отличается статический метод от обычного?
Нету this

175. Какие методы класса не могут быть статическими?
Операторы, которые должны быть non-static (см. 35), конструкторы и деструкторы, виртуальные функции.

176. Какие применения статических полей вы можете привести? А каким образом применяются статические методы?
Пример: контроль создания объектов класса: private ctor, static счетчик объектов, статик функция, создающая объекты.

177. Приведите структуру и принцип действия паттерна Singleton.
Есть разные реализации синглетона (общая проблема - время жизни).
template < class T > struct SingletonT : public T { static T & inst() { T t; return t; } private: /*ctor, copy ctor, assignment*/ };

Страницы: 1 2 3 4 5 6 Следующая »

28 июля 2006 (Обновление: 13 янв 2009)

Комментарии [11]