Мы не можем говорить о сходстве / различии, когда эти два языка имеют разные предположения.
В Java все является справочным - вы создаете объекты, они хранятся где-то (в стеке / куче), но выдоступ к ним только по ссылке.Это означает, что в myList
будет храниться адрес для экземпляра ArrayList
(реальный экземпляр - в памяти)
В C ++ вы можете обращаться к объекту как к объектам (со всеми последующими эффектами, такими как копирование всего объекта, когдапередача в качестве аргумента функции), но также и по ссылке (с помощью указателей - просто для того, чтобы избежать таких последствий, а также для использования некоторых специальных подарков, данных указателям, таких как итерации по ячейкам памяти).
Да - насчет итерации по компьютерной памяти - забавный факт в C ++ состоит в том, что он выделяет сплошной блок памяти (я имею в виду - следующие N ячеек / адресов в строке) для размещения массива там -вот почему вы можете объявить ваш массив как
int* a = new int[100]; // this is called dynamic allocation
, потому что вам нужен адрес первого элемента и размер объекта (определяется типом указателя).Вы можете перейти к следующему элементу, просто выполнив
a++
Чтобы различать использование объекта / указателя, вам нужен (или не нужен) оператор звездочки *
, и поэтому он происходит в C ++.
читайте также Какова цель (звездочка) в указателях?