Re[12]: что за ....!!! где C++ программисты?
От: FDSC Россия consp11.github.io блог
Дата: 31.05.07 14:37
Оценка:
Здравствуйте, superman, Вы писали:

S>Здравствуйте, FDSC, Вы писали:




FDS>>Нам это не важно, но это лишнее напоминание программисту, что это поле вовсе не внутренний объект, а именно указатель на ВНЕШНИЕ данные. Если программист это забудет, он может в итоге долго копаться в коде, не понимая, где же у него баг. А ссылка как раз способствует такому забыванию


S>ИМХО глупости. во первых не на ДАННЫЕ а на ОБЪЕКТ. внешний или внутрениий — без разницы. Вы пытаетесь решить несуществующую проблему.


Я считаю, что разница есть. Если объект внешний, программисту хотя бы бросится в глаза, если где-то будет несанкционированное изменение, что это именно указатель. А так, кто его знает, приватный объектик, может он только внутри класса и используется и создаётся. Это грабли


S>>>и ещё.. четвёртый недостаток. В самих методах класа, содержащего указатель, ты должен либо положиться на то что указатель обязательно проинициализирован конструктором или постоянно проверять, а проинициализирован ли он. ссылка бы обеспечила бы нам уверенность что она проинициализированна.. собственно в этом и вся разница, и все её приимущества.


FDS>>Проверять не надо

FDS>>Об этом писал здесь http://rsdn.ru/forum/message/2508595.1.aspx
Автор: FDSC
Дата: 31.05.07


S>Да глупости, надо проверять, надо!

S>ты показал как в Конструкторе сделать так что бы в конструкторе не надо было проверять. да согласен, выход. А в другом методе который пытается этот указатель использовать?

Зачем там его проверять? Если конструктор гарантирует, дальше будет всё нормально: указатель-то константный
Обрати внимание на слова const, я в main специально привёл попытку обнулить указатель

S> а ей может кто-то гарантировать что завтра не будет изменён конструктор котороый вчера гарантировал инициализацию?


Это ошибка, ну дак на то он и конструктор, что бы гарантировать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.