Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Объявление массивов в С++

#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 *".

Комментариев нет:

Отправить комментарий