это правильно.Единственный способ все испортить - это забыть удаление, удаление более одного раза или несоответствие между новым и удалением с или без скобок.Однако есть несколько вещей, на которые следует обратить внимание:
В вашем примере хорошо передать аргумент как const ref, потому что вы его не меняете.
void method(const MyClass &obj) const;
, а также вcpp соответственно:
void MyClass::method(const MyClass &obj) const{ ... }
Вам не нужно выделять объект в куче, вообще используя new.Фактически, вы почти всегда можете использовать такой синтаксис:
void main()
{
MyClass obj; // <- allocates it on the stack
obj.Name="Foo";
obj.method(obj);
}
// class is properly deleted when it goes out of scope
Всякий раз, когда у вас много необработанных данных, в частности классических массивов, они обычно являются членами класса (и даже это редкий случай из-заклассные контейнеры stl (например, vector), и вы позволите этому классу иметь дело с управлением памятью.Это снова позволяет создавать эти классы в стеке, очищать их, выпуская их из области видимости, и класс позаботится о том, чтобы огромный объем данных фактически хранился в куче.
Так что пока ваш код веренна самом деле вам редко приходится об этом беспокоиться, потому что вы