Я постараюсь оставлять на этой странице заметки к лекциям (неотвеченные вопросы, спорные моменты, просто замечания и пр.) пока их не забыл.
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*) с искомым именем, но другими параметрами. Не найдя других кандидатов внутри класса, компилятор остановил поиск и сообщил об ошибке.