Какой конструктор лучше для следующего класса?Аргумент, переданный значением или константой ссылки в конструкторе
struct Foo
{
Foo(const int& val):val_(val){} // constructor 1
Foo(int val):val_(val){} // constructor 2
int val_;
};
без какой-либо оптимизации компилятора, сделать они копируют Вэла только один раз или же конструктор 2 создает дополнительную копию перед списком инициализации?
Это технически верно. Однако ссылка, вероятно, будет скомпилирована с указателем, а это означает, что * указатель * должен быть скопирован вместо значения. –