LINUX.ORG.RU

C++: Указатели, ссылки, компиляторы.


1

1

Цитата:

Ссылки часто путают с указателями, вероятно, потому, что компиляторы C++ часто реализуют ссылки как указатели.

C++: Священные знания - Стивен С. Дьюхерст

Как далеки они от народа... Это он что, серьезно так считает?

То есть, он не понимает, что ссылки с указателями путают из-за ублюдочного контекстно-зависимого синтаксиса? Он не понимает, что человек путает использование «&» перед именем переменной для описания ссылки, и использование «&» перед именем переменной для получения адреса, передаваемого в указатель? Он этого, блин, не замечает? И он учит других людей C++?

Я прям так и вижу начинающего программиста C++, который залезает в дебри исходников компилятора, разгребает правила лексического анализатора, находит реализацию ссылок как указателей, и говорит: «Я тут у вас посмотрел, у вас ссылка как указатель реализована. Поэтому и попутал ссылку с указателем. Ах, какой я невнимательный, пойду дальше C++ учить, мне ведь еще столько предстоит освоить и понять».

★★★★★
Ответ на: комментарий от emulek

выше я про := и :

т.е если есть :

то значить

метка: что-то

где что-то либо =выражение либо код_на языке операторов.

обрати внимание в обоих случаях слева от : метка .

в частности для элемента массива вычисляемая.

qulinxao ★★☆
()
Ответ на: комментарий от yoghurt

О да, я ждал этого момента. Код в студию!

в сложном коде это действительно просто, и ты это знаешь. Сложно только в тривиальных случаях, когда ссылки и не нужны(можно и так написать).

Вот честно, за те пять лет, что пишу на плюсах за деньги, в определении операторов преобразования типов необходимость ни разу не вставала.

это хорошо. Когда встанет, вспомни наш спор, и подумай Over9000 раз, нужно-ли это...

Уж лучше явный метод написать.

лучше конечно.

emulek
()
Ответ на: комментарий от qulinxao

в C/C++ это всё называется lvalue/rvalue. Зачем ты мне об этом рассказываешь?

emulek
()
Ответ на: комментарий от qulinxao

листани всёж книженцию

я лучше Кнута листану. А этот отстой читай сам.

в современых мануалах пту-подобных.

ты ещё видео порекомендуй.

emulek
()
Ответ на: комментарий от emulek

дело в том, что ссылки == синтаксический сахар,

хуяхар. Запусти и удивись.

#include <cstdio>

class A
{
  public:
    A() {puts("a ctor");}
    A(const A &) {puts("a copy ctor");}
    ~A() {puts("a dtor");}
};

class B
{
  A a;
  public:
    A get_a() {return a;}
};

int main()
{
  B *b = new B;
    {
      const A &a = b->get_a();
      delete b;
      puts("we still have a but no b! wtf?");
    }
}
nanoolinux ★★★★
()
Ответ на: комментарий от anonymous

Ниразу в жизни не путал ничего ни с чем

Птица-секретарьЦаревна-зассыха, перелогинься.

slackwarrior ★★★★★
()
Ответ на: комментарий от emulek

Иди читай D&E. И чего ты такой вежливый-то?

anonymous
()

Выброси на помойку эту книженцию.

alexeiz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.