|
|
|
| Код:
Страуструп 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
Обратите внимание, что в резултате работы копирующего конструктора по умолчанию, член, являющийся ссылкой, в обеих копиях ссылается на один и тот же объект. Это может привести к проблеме, если объект, на который он ссылается, предполагается удалить.
Мне не совсем понятна фраза
Код:
член, являющийся ссылкой, в обеих копиях ссылается на один и тот же объект.
Почему объект один и тот же? | |
|
|
|
|
|
|
|
для: like-nix
(02.07.2008 в 20:27)
| | Потому что ссылки ссылаются на один и тот же участок памяти. | |
|
|
|
|
|
|
|
для: like-nix
(02.07.2008 в 20:27)
| | Unique_handler(const Unique_handler&);
Unique_handler& operator=(const Unique_handler&);
|
Вторая строка переопределяет оператор = в итоге &y2 = &y1, как сказано в посте2 | |
|
|
|