Почему невозможно создать массив ссылок в c ++?

class Foo {
    Bar b;
}

b , содержал в Foo. Если объект Foo заканчивает время жизни, b автоматически заканчивает время жизни также. Это что состав моделей. b выше обозначает сам объект, не только указатель на него как в Java. Для этого, если b выйдет из объема, объект закончит время жизни.

class Foo {
    Bar * b;
}

Здесь, объект b указывает на, используются или ссылаемый объект Foo. Если объект Foo заканчивает время жизни, объект b указывает на, может продолжить жить, в зависимости от обстоятельств. Это может привыкнуть к образцовому агрегированию и общим отношениям. Объект может быть совместно использован с другими объектами Foo, например.

Указатели примерно, какие ссылки находятся в Java. Они ни на что не могут также указать. Если указатель ни на что не указывает, это - нулевой указатель.

Подобный указателям ссылки. Ссылки в C++ должны быть инициализированы и могут только указать на один (допустимый) объект, для которого была инициализирована ссылка. Ссылка для этого не может содержать значение, которое не могло означать "ничего" как null в Java.

28
задан Mihran Hovsepyan 7 November 2014 в 17:01
поделиться

2 ответа

Вот что я прочитал:

5.2.1 Подписка [expr.sub]

1 Постфиксное выражение, за которым следует квадратное выражение скобки это постфиксное выражение. Одно из выражений должно иметь тип «указатель на T», а другое должно иметь перечисление или целочисленный тип. Результатом является lvalue типа «T». Тип «T» должен быть полностью определенным типом объекта.61) Выражение E1 [E2] идентично (по определению) * ((E1) + (E2)) [Примечание: см. 5.3 и 5.7 для деталей * и + и 8.3.4 для деталей массивов. - Конечная заметка]

-C ++ Draft.

int a = 10, b = 20;
int &c[] = {a, b};

Итак, представьте, что &c[0] будет чем-то подобно *&(c+0), ссылки ИМХО подобны псевдонимам. Следовательно, исходя из понятия «массивы», он будет пытаться разыменовать значение, содержащееся в ссылке, которая не нужна.

1
ответ дан 28 November 2019 в 03:35
поделиться

Потому что ссылки не являются объектами. Ссылки были в основном введены для поддержки вызова по ссылке и возврата по ссылке без вставки & на сайте вызова. То, что вы, вероятно, хотите, это массив указателей.

5
ответ дан 28 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: