2011-02-08 4 views

ответ

2

A(A a){/*do something*/} Может быть полезным в качестве конструктора копирования.

3

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

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

0

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

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

1

Нет никаких преимуществ, если вам не нужен конструктор копирования. Я бы предложил использовать метод clone(), если этот объект должен быть клонирован, а не использовать семантику конструктора копии.

2

Как уже было сказано, у вас есть конструктор копирования. Есть number of reasons, почему вам может понадобиться конструктор копирования. Некоторые из них:

  1. Вы можете предоставить альтернативу методу клонирования. (Который реализован через интерфейс Clonable.)
  2. Конструкторы копирования легко реализуются.
  3. Вы можете использовать другой конструктор для создания копии (путем извлечения данных из исходного объекта и пересылки в обычный конструктор).

Ознакомьтесь с ссылкой, которую я добавил в это сообщение для получения дополнительной информации о конструкторах копий и почему вы хотели бы использовать их (если они вам понадобятся).

0

Это также может быть полезным в ряде делегаций на основе шаблонов проектирования, таких как decorator или proxy т.д.

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

Смежные вопросы