Допустим, у меня есть такая строка кода:
MyClass obj(1, 2, "hello");
И в какой-то момент в будущем я хочу назначить obj
новое значение, т.е. obj(3, 4, "bye")
, Как это сделать?
Я имею в виду в Джава Я бы сделал это:
MyClass obj = new MyClass(1, 2, "hello");
obj = new MyClass(3, 4, "bye");
В C ++ Я попробовал это:
MyClass obj(1, 2, "hello");
obj(3, 4, "bye");
Но это не сработало, поэтому я тоже попробовал это:
MyClass obj(1, 2, "hello");
obj = MyClass(3, 4, "bye");
И это действительно сработало, но я не уверен, является ли это предпочтительным способом достижения этого.
Пожалуйста, предложите мне чистый способ присвоения переменной новый объект и скажите, нужно ли предпринимать какие-либо дополнительные усилия для управления памятью после такого назначения.
Пожалуйста, имейте в виду, что я начал учиться C ++ два дня назад, но я знаю OOP Я знаю, сколько пальцев у меня на руках.
Код на C ++, который похож на код Java
MyClass obj = new MyClass(1, 2, "hello");
obj = new MyClass(3, 4, "bye");
будет выглядеть
MyClass *obj = new MyClass(1, 2, "hello");
delete obj;
obj = new MyClass(3, 4, "bye");
То, как вы используете для назначения объекта в C ++, как
MyClass obj(1, 2, "hello");
obj = MyClass(3, 4, "bye");
допустимо при условии, что в классе определен допустимый оператор присваивания копии или перемещения.