Просмотр одиночного сообщения
Old 10-02-2006, 15:17   #43
Alvarez
Registered User
 
Аватар для Alvarez
 
Сообщений: 120
Проживание: Хельсинки
Регистрация: 08-08-2005
Status: Offline
Репутация: 0
Цитата:
Сообщение от zuber


Здесь не соглашусь. "Константы" есть всего лишь стиль программирования, ограничиваюший возможные ошибки при использовании класса, но, в тоже время может повлечь за собой дополнительные проблемы с несоответствием типов,т.к. цонст инт и инт цомпилятор может рассматривать по разному и не делать автоматического каста.



мне казалось, что коснтрукторы и деструкторы вызываются автоматически через неw() делете().



Ну, все-равно, он не есть самый еффективный. Если надо собаке проверить правильность имени, а ее подвергают полному мед-осмотру на неделю - хозяева не будут довольны


Нее... ну глобальная функция - енто так же неправильно, как собаке пришивать.


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

Конструкторы и деструкторы. Вам должно быть наплевать когда они вызываются. мыслите абстрактно от контекстов и реализаций. Усвойте - конструктор вызывается в момент создания объекта. Кто, где, когда, как, через new, по умолчанию, или ещё как то, создаёт объект - вам по барабану. CType Object; тоже вызовет конструктор - но тут никакого new нет...
Деструктор вызывается в момент уничтожения объекта, а не вызовом delete. Привести примеры? Выход объекта из области видимости, вызов деструктора явно, через delete, наконец. Наверняка ещё есть способы, или будут. Не заморачивайтесь с контекстом, делайте только то, что требуется. Дело деструктора - освободить ресурсы, занятые объектом, и точка.

Насчёт полиморфизма, не уверен, поняли или нет. Вы создаёте объект нужного класса, а обращаетесь с ним, и однотипными, по ссылке на их родительский класс, и уничтожить можете также по той же ссылке. Если деструктор не виртуальный, уничтожиться только родительская часть объекта, деструктор самогО класса не вызовется.

Уверяю Вас, безопасность и эффективность суть вещи несравнимые, потому как безопасность (ака надёжность, ака стоимость сопровождения) на порядки нужнее и важнее эффективности. Это ИМХО, взятое из 20-летнего опыта программирования. Спорить не буду, если есть другие мнения.

Да, глобальная функция плохо, я её Вам и не предлагал, а вот статическая, в каком нибудь StringUtils классе - самое то. То же что и глобальная, только скрыта именем класса. Именно это я имел ввиду, говоря про "глобальный класс".

Удачи.
 
0
 
0
    Ответить с цитированием