#cpp
Инициализация массива в Java: int[] array = new int[10]; В то время как в С++: int array[10]; Вопрос. Есть какая-то разница в том, что в С++ не используется оператор new и когда используется new, а когда нет? С джавы я уже привык, что запись: int array[] - это только создания ссылки.
Ответы
Ответ 1
Аналогом джавового выражения в C++ будет int *arr = new int[10];, ибо иначе массив выделяется на стеке, а не в хипе. Семантики выражения int array[10]; в Java нет.Ответ 2
В C++ более-менее value semantics, в частности, для обычного типа объявление локальной переменной автоматически означает создание на стеке локального объекта, который эта переменная и представляет. new — операция создания объекта где-то в памяти, его время жизни при этом в простейем случае никак не зависит от local scope; чтобы можно было написать var = new Class;, переменная var должна (без дополнительных телодвижений) иметь тип "указатель, совместимый с Class *".
Комментариев нет:
Отправить комментарий