struct X
{
X() { std::cout << "X()\n"; }
X(int) { std::cout << "X(int)\n"; }
};
const int answer = 42;
int main()
{
X(answer);
}
Я ожидал, что это напечатает либо
X(int)
, потому чтоX(answer);
можно интерпретировать как приведение отint
кX
, или- вообще ничего, потому что
X(answer);
можно интерпретировать как объявление переменной.
Однако он печатает X()
, и я понятия не имею, почему X(answer);
вызывает конструктор по умолчанию.
БОНУСНЫЕ БАЛЛЫ: Что мне нужно изменить, чтобы получить временное объявление вместо объявления переменной?
int answer
-> любой другой тип. - person Flexo   schedule 27.07.2012X(int(answer));
ничего не печатает, потому что это объявление функции :) - person fredoverflow   schedule 27.07.2012double(expresso);
ну вот, объявлено специально для тебя ;) - person fredoverflow   schedule 27.07.2012