В отличие от Java, в C ++ не требуется , чтобы использовать ключевое слово new
для создания объектов. В Java все объекты хранятся в куче (бесплатное хранилище) и доступны только по ссылкам.
В C ++ объекты могут быть типами значений. Вы можете объявить их прямо в стеке, например,
SuperArray array(start, end);
И вы можете вызывать методы, такие как:
array.get(1);
Этот объект будет автоматически уничтожен, когда array
выйдет из области видимости. Если вы хотите управлять временем жизни объекта array
вручную, вы можете опционально создать его в куче, используя new
, но затем вам нужно обратиться к нему с указателем:
SuperArray* array = new SuperArray(start, end);
Теперь вы должны вызывать такие методы:
array->get(i);
, поскольку array
в этом случае является указателем на SuperArray
, а не на SuperArray
(и у указателя нет собственного метода get
). Оператор ->
означает использование оператора .
для намеченного объекта.
В этом случае объект, на который указывает указатель array
, будет продолжать существовать до тех пор, пока вы не вызовете delete array;
Если вам не удастся явно удалить объект, он никогда не будет освобожден (C ++ не имеет сборщика мусора!) И у вас будет утечка памяти.
Обратите внимание, что в C ++ есть вещи, называемые «указателями», и вещи, называемые «ссылками». Java "ссылка" имеет некоторые свойства обеих этих вещей и не является прямо эквивалентным ни тому, ни другому. Хороший вводный текст на C ++ должен объяснить разницу между ними.