Форум: Форум C++Разное
Новые темы: 00
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по основам С++
 
 автор: like-nix   (02.07.2008 в 20:27)   письмо автору
 
 

Код:
Страуструп 3 -е Специальное издание
стр 297

class Unique_handler {
private: // операция копирования закрыты с целью
// предотвращения копирования ($11.2.2)

Unique_handler(const Unique_handler&);
Unique_handler& operator=(const Unique_handler&);
public:
// ...
}

struct Y {
//...
Unique_handler a; //требует явной инициализации
}

Y y1;
Y y2 = y1; // ошибка: невозможно скопировать Y::a

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


Мне не совсем понятна фраза

Код:
член, являющийся ссылкой, в обеих копиях ссылается на один и тот же объект.

Почему объект один и тот же?

  Ответить  
 
 автор: cheops   (10.08.2008 в 00:12)   письмо автору
 
   для: like-nix   (02.07.2008 в 20:27)
 

Потому что ссылки ссылаются на один и тот же участок памяти.

  Ответить  
 
 автор: AndreyCh   (11.08.2008 в 23:12)   письмо автору
 
   для: like-nix   (02.07.2008 в 20:27)
 

Unique_handler(const Unique_handler&);
Unique_handler& operator=(const Unique_handler&);

Вторая строка переопределяет оператор = в итоге &y2 = &y1, как сказано в посте2

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования