И то и другое равноправно имеет право на жизнь.
Не согласен. Вполне может встретиться вариант, когда инициализация и присваивание неравнозначны. Например, класс описывает данные о сотрудниках некоторой организации, при этом по бизнес-правилам табельный номер не может меняться. Вполне естественно предоставить доступ к этому полю только на чтение, а значение задавать при инициализации. Если теперь сделаем, скажем, класс "менеджер" производным от "сотрудника", то такой вариант сработает:
class CWorker
{
private:
long int m_OrdNum;
...
public:
CWorker(long int n) { m_OrdNum = n; };
long int GetOrdNum() { return m_OrdNum; };
...
}
class CManager: public CWorker
{
public:
CManager(long int n): CWorker(n) { ... };
...
}
Как сделать то же самое посредством присваивания столь же просто и безопасно, я так с ходу и не представляю.
Такой вариант нагляднее в смысле обучения, показательнее что-ли...
Сначала научить присваивать, а потом переучивать корректно инициалировать? IMHO все же лучше сразу учить правильно, даже если это немного сложнее. Тем более что все-таки присваивание все же не всесильно, как показано в примере выше.
Но это уже мое IMHO... А "по жизни" я и сам чаще применяю инициализацию
Тем более, самое лучшее обучение - личным примером
Ну, если рассматривать примеры и варианты "на все случаи жизни", то ни жизни, ни объемов толстенной книги не хватит
В данном случае как раз все просто. Достаточно лишь удалить выделенный фрагмент, который может сбить начинающего с толку, и все остальное становится совершенно корректным в любом случае, вовсе не потребуется перебор частных случаев. Тут как раз та ситуация, что излишняя детализация приносит лишь вред.
В следующей части (а их впереди еще три, и все уже давно написаны) будет рассмотрено буквальное и развернутое копирование - это не оно? А то терминов расплодилось немеряно
Я имею в виду то, что в литературе известно под названиями
shallow copy и
deep copy. Слабо представляю, что такое
буквальное и
развернутое копирование. Возможно, это на самом деле то же самое, просто издержки перевода терминов на русский язык. Доживем до следующей части - увидим.