Я немного смущен, прочитав что-то в учебнике. Что касается кода:
void doSomeWork(const Widget& w)
{
//Fun stuff.
}
doSomeWork(Widget(15));
doSomeWork()
принимает параметр const Widget&
. В учебнике Effective С++ III указано, что это создает временный объект Widget для перехода к doSomeWork. В нем говорится, что это можно заменить на:
doSomeWork(static_cast<Widget>(15));
так как обе версии являются отличными - первый - это просто строчный C-образный стиль. Я бы подумал, что Widget(15)
будет ссылаться на конструктор для виджета, который принимает один целочисленный параметр.
Будет ли выполняться конструктор в этом случае?