Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fulcrum_013
699 / 764 / 74
Регистрация: 14.12.2014
Сообщений: 6,036
Завершенные тесты: 3
#1

Неоднозначность декларации - C++

19.09.2016, 09:24. Просмотров 135. Ответов 1
Метки нет (Все метки)

Итак уважаемые знатоки:
C++
1
2
3
4
5
6
class Foo{
public:
            Foo(){};
};
 
Foo Bar();
Внимание вопрос: как уважающий себя компилятор поступит в данном случае: посчитает Bar() инициализацией объекта или декларацией функции?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2016, 09:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неоднозначность декларации (C++):

Виртуальная неоднозначность - C++
Не понимаю пример из книги С.Праты: class B { public: short q(); }; class C : virtual public B { public:

неоднозначность, explicit - C++
Добрый вечер. написал такой шаблонный класс: template <class T> class Container { private: ...... public: ...

Неоднозначность при наследовании - C++
Привет народ, думаю мой вопрос покажется вам чем-то из разряда "лучше бы делом занялся", но тех у кого останется терпение, прошу помочь мне...

Неоднозначность и multiple inheritance - C++
Есть такая иерархия и main(): #include <iostream> #include <string> #include <complex> using namespace std; class Base { ...

Неоднозначность переменной count - C++
Доброго времени суток. Использую VS2013. Подскажите пожалуйста, по какой причине глобальная переменная, в приведенном ниже коде, не...

Декларации - C++
Подскажите пожалуйста, что такое "декларации"?

1
DrOffset
7376 / 4453 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
19.09.2016, 09:32 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
посчитает Bar() инициализацией объекта или декларацией функции?
Будет декларация функции.
См. здесь: Most Vexing Parse

Добавлено через 5 минут
8.2/1
The ambiguity arising from the similarity between a function-style cast and a declaration mentioned in 6.8
can also occur in the context of a declaration. In that context, the choice is between a function declaration
with a redundant set of parentheses around a parameter name and an object declaration with a function-style
cast as the initializer. Just as for the ambiguities mentioned in 6.8, the resolution is to consider any construct
that could possibly be a declaration a declaration
. [ Note: A declaration can be explicitly disambiguated by
a nonfunction-style cast, by an = to indicate initialization or by removing the redundant parentheses around
the parameter name. —end note ] [ Example:
C++
1
2
3
4
5
6
7
8
9
struct S {
    S(int);
};
void foo(double a) {
    S w(int(a)); // function declaration
    S x(int()); // function declaration
    S y((int)a); // object declaration
    S z = int(a); // object declaration
}
—end example ]
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2016, 09:32
Привет! Вот еще темы с ответами:

Неоднозначность при множественном наследовании - C++
Привет всем, столкнулся с проблемой при множественном наследовании классов. Надеюсь, кто-нибудь поможет как можно скорее. Ошибка...

нет декларации to_string - C++
Программа сочетает 2 ф-ии: Если есть второй аргумент (пришлось данное условие задавать статично =\) то сравниваем str1 с str2, если второй...

компилятор находит неоднозначность при вызове round(i) - C++
Доброго времени суток! Подскажите, компилятор находит неодназначтность в строке 26 *вызов функции round(i)* ...

Нет декларации «EOF» в этой области видимости - C++
Это не упражнение, а просто пример задачи, но видимо в нёс есть какая-то ошибка и я хочу узнать какая На всякий пожарный заголовочный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru