Вопрос : Совершенный оператор назначения 1

Здравствулте!,

How должно я сделать совершенного оператора назначения для этого типа?

class TAAA : общественное TSuperAAA
{
TBBB* b1_;
   TBBB* b2_;
};
TBBB будет monomorphic и b1_, пункт something.
b2_ class=

Ответ : Совершенный оператор назначения 1

>> специально когда Infinity08: написал что гарантия необходима в реальной системе (если я понял).

Не, я не намеревался что гарантия не необходима. Я сказал в ответ на столб обстановки было что я предпочитаю общаться с условиями ошибки по-разному чем его подходом.

2 подхода здесь (я добавлял мои собственные личные мысли слишком):

(a) Попытайтесь написать оператору назначения для того чтобы выйти предмет в действительное положение для каждого по возможности сценария. Это основно невозможно, или весьма крепко по крайней мере. Будут слишком много перемеююых задействованные, и слишком много по возможности сценария ошибки. Additionaly, этот вид подхода добавляет ограничения к Кодий может сделать, которое не желательно в много случаев.

(b) Избегите добавленной сложности приходит с ранее подходом, и вместо отложите ответственность к вызывая Кодему. Механизм исключений совершенно одет для того. Furthermore, будет обычно вызывая Кодим которое знает самое лучшее как общаться с ошибкой (тем путем пытаться зафиксировать его, проигнорировать его, потерпеть неудачу грациозно, etc.), так, что будет другая причина предпочитать этот подход.

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



>> Моя воодушевленность для делать этот столб

Будет славной статьей, и она деиствительно покрывает много из опасностей с операторами назначения.


>> Iий и интересовало будет правильным ответом для того.

Вы заметите что статья начинает с одной из правильно дорог причалить оператору назначения. Единственная разница с Кодим, котор я вывесил более раньше, что их оператор назначения правильн очищает вверх после себя в случае если распределение памяти терпит неудачу.

То хорошо, но вс обязательно. Ликвидатор типов конструирован для того чтобы очистить вверх предмет, поэтому я предпочитаю выйти та ответственность там, вместо распространять ее вне на всем методы типов.

К концу статьи, по-разному подходы обсужены слишком.


Идущ над моим более предыдущим Кодим снова, я запятнал одну ошибку однако. «Delete b1_; » линия должна быть последована за «b1_ = 0; » линия (подобно для b2_). Кажусь я печатал heh на машинке бита слишком быстрое. Так, оно становит:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
TAAA& TAAA:: operator= (taaa const TAAA&) {
    TSuperAAA:: operator= (taaa);                   звонок // оператор назначения для низкопробного типа
    если (это! = &taaa) {                          проверка // для назначения собственной личности
        delete b1_;
        b1_ = 0;
        b1_ = новое TBBB (taaa.b1_);
        delete b2_;
        b2_ = 0;
        b2_ = новое TBBB (taaa.b2_);
    }
    возвращенные *this;
}
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us