Когда значения const передаются в конструктор объекта, они должны быть переданы по ссылке или по значению?
Все учебные примеры конструкторов и инициализаторов передаются по значению, но мне это кажется неэффективным.
Если вы передаете по значению, а аргументы немедленно используются для инициализации переменной-члена, делаются ли две копии? Об этом автоматически позаботится компилятор?
class Point {
public:
int x;
int y;
Point(const int _x, const int _y) : x(_x), y(_y) {}
};
int main() {
const int a = 1, b = 2;
Point p(a,b);
Point q(3,5);
cout << p.x << "," << p.y << endl;
cout << q.x << "," << q.y << endl;
}
против
class Point {
public:
int x;
int y;
Point(const int& _x, const int& _y) : x(_x), y(_y) {}
};
И компилировать, и делать то же самое, но что правильно?