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