Ассоциативность оператора «*» в «новом» заявлении в C ++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ассоциативность оператора «*» в «новом» заявлении в C ++

Сообщение Anonymous »

У меня есть пользовательский класс Person < /code>, и я хочу создать массив размером с переменного размера (размер во время выполнения) указателей человека.
Следующий код работает, как и ожидалось.

Код: Выделить всё

Person **arr = new Person* [size];
Однако я точно не понимал, с кем связан оператор *. Я попытался поставить парарантез, как: < /p>

[*]

Код: Выделить всё

new ((Person*)[size])

Код: Выделить всё

new (Person (*)[size])< /code> < /li>
< /ol>
Только второй вариант работает.Person* arr[10]
будет означать массив человека* type (массив человека указатели) (ассоциативность с человеком ).

while Person (*arr) [10] означало бы указатель на массив человека (ассоциативность с arr ). @Jan schultke Я понял, что новый человек* [size] и новый (человек (*) [size]) не имеют такого же эффекта. Один возвращает человека ** , а другой возвращает человека (**) [size] .
Также второе не позволяет размер быть переменной. В последнее время я изучаю методологию ООП, сосредотачиваясь на понятиях языка программирования C ++, и моя цель - справиться с тем, что происходит под капотом, а не просто использовать библиотеку.

Подробнее здесь: https://stackoverflow.com/questions/796 ... ement-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»