Вопрос по с++, Помогите понять суть |
Здравствуйте, гость ( Вход | Регистрация )
Вопрос по с++, Помогите понять суть |
igor_bogomolov |
13.7.2010, 23:34
Сообщение
#1
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Вопрос из теста.
Раскрывающийся текст
Вопрос в тесте такой - сколько раз вызовется конструктор класса A при исполнении функции main. После ответа откомпилируй код для проверки, добавив какой-нибудь std::cout в конструктор A. При первом просмотре (да и при втором, третьем, ...) я предположил, что конструктор вызовится 4 раза. Откомпилировав, получил всего два вызова. Пробовал воспользоваться отладчиком и впал в недоумение. r1 и r2 вообще не создаются, т.е. при компиляции эти строчки игнорируются. Сделал m_name публичным и попробовал обратиться к нему после создания r1. Получил ошибку компиляции Цитата ошибка: запрос элемента ‘m_name’ в ‘r1’, имеющего не классовый тип ‘A(std::string)’ При этом r3 и r4 создаются нормально и обращение к m_name не приводит к ошибке.Помогите разобраться что происходит |
|
|
DEADHUNT |
14.7.2010, 18:27
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
вот в чём дело:
7 Another ambiguity arises in a parameter-declaration-clause of a function declaration, or in a type-id that is the operand of a sizeof or typeid operator, when a type-name is nested in parentheses. In this case, the choice is between the declaration of a parameter of type pointer to function and the declaration of a parameter with redundant parentheses around the declarator-id. The resolution is to consider the type-name as a simple-type-specifier rather than a declarator-id. [ Example:
Еще подсказали. Достаточно выражение в r1 и r2 заключить еще в одни скобки и неоднозначность пропадет. этим исключается возможность выбора simple type-specifier. |
|
|
Текстовая версия | Сейчас: 25.4.2024, 1:21 |