Я встретил этот вопрос на С++:
Вопрос: Является ли следующее определение или декларация?
Foo f(Bar());
Ответ. Возможно, это либо объявление функции, которая принимает тип Bar, и возвращает тип Foo, либо это определение f
как тип Foo
, у которого есть конструктор, который принимает тип Bar. Проблема заключается в том, что синтаксис для обоих идентичен, поэтому для решения этой проблемы стандарт С++ утверждает, что компилятор должен предпочесть объявления функций для определения объектов, где он неспособен сделать различие.
- Я не понимаю, почему это может быть "объявление функции, которая принимает тип Bar и возвращает тип Foo"? как появилась скобка "()" в списке параметров?