Как связать / связать ссылку на объект с новым [] (массив)? - PullRequest
0 голосов
/ 24 июля 2011

Обычно ссылка на простой объект привязывается как

T& t = *new T;

Но как связать ссылку с выводом new[]?

T& ??? = *new T[size];

[Примечание: Здесь является одним из возможных способов, но я думаю, что должен быть какой-то лучший выход, который дает эффект массива.]

Редактировать : Этот вопрос не о хорошей / плохой практике кодирования или о том, является ли это распространенным / необычным для использования. Я хотел знать, возможно ли это синтаксически или нет?

1 Ответ

2 голосов
/ 24 июля 2011

Обычно ссылки привязываются к простому объекту, как,

Нет, это не так.Такие вещи - это функциональный, четко определенный код C ++.Но это вообще дурной тон.Это заставляет вас позже сделать это:

delete &t;

Это снова функционально и четко определено спецификацией.Но это ужасно уродливо и дает неправильное представление о том, что делает код.

как связать ссылку с выводом new []?

Это не нужно,В C и C ++ указатели и массивы - это практически одно и то же (технически массивы автоматически преобразуются в указатель на первый элемент, если это необходимо).Таким образом, вы можете сделать это:

T *t = new T[5];
t[4].stuff();
...