Как определить метод класса, чтобы объект в него передавался не по ссылке? Пусть 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);

21 Авг 2019 в 07:02
230 +1
0
Ответы
1

Для того чтобы объект класса передавался в метод не по ссылке, а по значению, необходимо определить метод как const и использовать const-квалификатор у объекта. В данном случае метод sum1() должен выглядеть так:

int sum1() const { return x + y; }

Теперь объект класса MyClass можно будет передать в метод sum1() по значению:

MyClass MyVar;
MyVar.sum1();

Таким образом, объект MyVar будет скопирован в метод sum1() и его изменение внутри метода не повлияет на оригинальный объект.

20 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир