Язык С++ |
По последним данным, на рынке продается по крайней мере 2 768 942 книги о С++, не говоря уже о всевозможных курсах, обучающих программах, журналах и семинарах с коктейлями. И все же в этом изобилии наблюдается удручающее однообразие. |
| |
|
Добро пожаловать на сайт студии Web-дизайна "САР" |
Материалы книги получены с http://www.itlibitum.ru/
Присваивание
Ааааа! Эти зловредные пользователи когда-нибудь угомонятся?!
MP<Foo> mpf1;
MP<Foo> mpf2;
mpf2 = mpf1; // Нет, только не это...
В приведенном фрагменте возникают сразу две проблемы. Во-первых, указываемый объект, созданный конструктором mpf2, никогда не удаляется. Он превращается в Летучего Голландца, обреченного на вечные скитания в океане памяти. Во-вторых, оператор =, используемый компилятором по умолчанию, копирует адрес, находящийся в t, из одного указателя в другой, что приводит к появлению двух ведущих указателей, ссылающихся на один объект. В исправленном варианте перегруженный оператор
= удаляет объект, на который ссылается левосторонний указатель, и заменяет его копией объекта, на который ссылается правосторонний указатель.
template <class Type>
class MP {
private:
Type* t;
public:
MP(); // Нормальный конструктор
MP<Type>& operator=(const MP<Type>& mp)
{
if (&mp != this) {
delete t;
t = new Type(*(mp.t));
}
return *this;
}
};
Разумеется, если вы вообще не хотите поддерживать присваивание, достаточно объявить оператор = закрытым.
Назад Содержание Далее
| |
Специальное предложение |
- Регистрация доменного имени в зоне .net.ru или .pp.ru (1 год)
- Хостинг (1 год)
- Готовый дизайн
- Поддержка РНР
- 3 страницы сайта (главная, о фирме, контакты)
- Регистрация в 256 поисковых системах и каталогах
- Форма сообщений
|
|
Размещение объявлений |
Недорого предлагаем разослать ваше рекламное предложение о товарах или услугах на сотни досок объявлений по всему Рунету. |
|
Язык С++ |
Просматривать полку книг о С++ в книжном магазине ничуть не интереснее, чем литературу по бухгалтерии. В сущности, все книги пересказывают одно и то же и отличаются разве что по весу и количеству цветов в диаграммах и таблицах.
|
|
|