Какая потребность в ссылке в С++

98
9

Сегодня кто-то задает мне этот вопрос. Какая потребность в ссылке в C++, почему Bjarne Stroustrup подумал о reference в C++.

спросил(а) 2012-04-05T21:58:00+04:00 7 лет, 10 месяцев назад
1
Решение
86

Вот объяснение Страуструпа: http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references

C++ унаследованные указатели от C, поэтому я не смог их удалить, не вызывая серьезных проблем с совместимостью. Ссылки полезны для нескольких вещей, но прямая причина, по которой я ввел их в C++, заключалась в поддержке перегрузки операторов.

Вот пример:

void f1(const complex* x, const complex* y) // without references
{
complex z = *x+*y; // ugly
// ...
}

void f2(const complex& x, const complex& y) // with references
{
complex z = x+y; // better
// ...
}

ответил(а) 2012-04-05T22:05:00+04:00 7 лет, 10 месяцев назад
52

Если вы хотите узнать ответ на такие вопросы, прочитайте книгу под названием "Дизайн и эволюция C++" самим человеком:

http://www2.research.att.com/~bs/dne.html

В качестве альтернативы, см. Здесь, где он подробно объясняет ответ:

http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references


Цитировать:

C++ унаследованные указатели от C, поэтому я не смог их удалить, не вызывая серьезных проблем с совместимостью. Ссылки полезны для нескольких вещей, но прямая причина, по которой я ввел их в C++, заключалась в поддержке перегрузки операторов. Например:

void f1(const complex* x, const complex* y) // without references
{
complex z = *x+*y; // ugly
// ...
}

void f2(const complex& x, const complex& y) // with references
{
complex z = x+y; // better
// ...
}

ответил(а) 2012-04-05T22:04:00+04:00 7 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема