Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Клуб профессиональных программистов :: Выпуск #1




Новости

Начало положено: первые три подписчика есть! Это может показаться смешным, но все большое начинается с малого. Пока прошел всего лишь один день (на момент подготовки этого выпуска). Если копнуть историю прошлой рассылки, то там такая вот впечатляющая тенденция: http://subscribe.ru/stat/comp.soft.prog.compu/?2002

Пока работаем на собой: собираем статьи, придумываем темы, отрабатываем процесс подготовки и публикации.

В настоящий момент выпуском рассылки занимаются:

  • RXL - редактура, форматирование, новости, выпуск.
  • Sel - грамматика, стилистика и подталкивание (за все это ей большое спасибо).

Выпускать рассылку каждый день, как это было когда-то, мы пока не можем. Для начала - раз в неделю. Возможно, в промежутке мы будем выпускать чисто информационные выпуски. Главное - колесо снова завертелось. Надолго ли - покажет время. Многое зависит от вас, читатели: пишите свои отзывы - авторы это любят. ;) В большинстве случаев писать лично не стоит - лучше пишите им на форуме в подходящий под тематику раздел.

В этом выпуске предлогаем Вашему вниманию отрывок очередной статьи Михалыча из серии статей о копировании и присваивании в C++. Начало серии вы можете прочесть на нашем сайте. Всего сейчас у нас 198 статей наших авторов. И будет больше! Автором может стать любой желающий!

Классы: копирование и присваивание. Часть 3.

Продолжим начатое в статьях "Классы: копирование и присваивание. Часть 1 и Часть 2" подробное рассмотрение проблемы копирования и присваивания в классах.

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

Когда выполняется копирование?

Издержки при копировании сложных объектов могут быть очень высокими, о чем несложно догадаться, если представить себе, насколько сложны классы, работающие с графическими объектами, управляющие развитыми структурами данных или входящие во множественные иерархии. Поэтому небесполезно будет выяснить, в каких же ситуациях вызываются и выполняются конструктор копий и операция присваивания. Поскольку по характеру своей деятельности они очень похожи, мы не станем рассматривать их по отдельности, а поговорим о копировании вообще.

Копирование происходит при передаче объекта по значению, т. е. когда в описании соответствующего аргумента функции не используются операция получения адреса (&) или разыменования (*). При возврате объекта по значению также имеет место копирование. Вот примеры обоих случаев:

void Pixel(POINT arg); //передача объекта по значению
POINT Draw(void); //возврат объекта по значению 

POINT - в данном случае тот самый класс, определяющий точку на плоскости из первой части этих статей.

Когда объект передается по значению, все производимые над ним манипуляции в действительности касаются только его копии. Если объект создается внутри функции, крайне желательно возвращать его по значению, а не по ссылке. Почему?


Целиком статью вы можете прочитать на нашем сайте: http://club.shelek.com/viewart.php?id=258




В избранное