MyWackoSite: СпецкурсCxx/Осень2006/КомментарииКЛекциям ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  
Это старая версия СпецкурсCxx/Осень2006/КомментарииКЛекциям за 2006-10-03 23:21:40..
Я постараюсь оставлять на этой странице заметки к лекциям (неотвеченные вопросы, спорные моменты, просто замечания и пр.) пока их не забыл.

3 Окт 2006

Вопрос про строковый литерал

Вопрос: Что является константным в выражении const char str[] = “String literal”; массив или char?
Ответ: Конечно char.

Вот текст из Страуструпа:
The type of a string literal is “array of the appropriate number of cons characters,” so “Bohr” is of type const char [5].

A string literal can be assigned to a char*. This is allowed because in previous definitions of C and C + +, the type of a string literal was char*. Allowing the assignment of a string literal to a char* ensures that millions of lines of C and C++ remain valid.

Вопрос про ошибку компиляции (личный)

Сев в автобус, я вдруг понял, что совершенно зря пообещал побить костылем одного господина. Дело в том, что вопрос был совершенно законным. Дело в порядке поиска имен. Компилятор ищет функцию, которую следует вызвать в каждом конкретном случае, среди доступных областей видимости в определенном порядке. Область видимости имен класса является одним из первых кандидатов для поиска. Когда компилятор находит функцию (или несколько) с соответствующим именем (независимо от параметров), поиск прекращается.

В конкретном случае, класс, по всей видимости, содержал функцию f(int*) с искомым именем, но другими параметрами. Не найдя других кандидатов внутри класса, компилятор остановил поиск и сообщил об ошибке.
 
Файлов нет. [Показать файлы/форму]
Много комментариев (4). [Показать комментарии/форму]