Как определить метод класса, чтобы объект в него передавался не по ссылке? Пусть class MyClass { int x, y; int sum1(); } MyClass::sum1() { return x+y; } Если я правильно понимаю, то MyClass MyVar; MyVar.sum1(); эквивалентно вызову функции sum2int sum2(MyClass &MyVar) { return MyVar.x + MyVar.y } MyClass MyVar; sum2(MyClass &MyVar); А как можно определить метод класса, чтобы объект в него передавался не по ссылке? Чтоб было что-то подобное:int sum2(MyClass MyVar) { return MyVar.x + MyVar.y } MyClass MyVar; sum2(MyClass MyVar);
Для того чтобы объект класса передавался в метод не по ссылке, а по значению, необходимо определить метод как const и использовать const-квалификатор у объекта. В данном случае метод sum1() должен выглядеть так:
int sum1() const { return x + y; }
Теперь объект класса MyClass можно будет передать в метод sum1() по значению:
MyClass MyVar; MyVar.sum1();
Таким образом, объект MyVar будет скопирован в метод sum1() и его изменение внутри метода не повлияет на оригинальный объект.
Для того чтобы объект класса передавался в метод не по ссылке, а по значению, необходимо определить метод как const и использовать const-квалификатор у объекта. В данном случае метод sum1() должен выглядеть так:
int sum1() const { return x + y; }
Теперь объект класса MyClass можно будет передать в метод sum1() по значению:
MyClass MyVar;
MyVar.sum1();
Таким образом, объект MyVar будет скопирован в метод sum1() и его изменение внутри метода не повлияет на оригинальный объект.