Date Редакция Категория comp Теги Cpp

Список вопросов.

1.

i |= (i+1)
  1. Конструктор по умолчанию, конструктор копирования, оператор присваивания и деструктор.

  2. Не определен конструктор копирования. Т.к. при передаче объекта в функцию создается его копия, то появятся два объекта, у которых ptr ссылается на одну область памяти. По выходе из функции для созданной копии вызывается деструктор, который удалит общую область памяти. В результате, в последней строке программы будет выведен "мусор".

  3. Оператор присваивания ничего не возвращает, поэтому при двойном присваивании происходит ошибка компиляции (no known conversion for argument 1 from 'void' to 'const CAssignableClass&'). Вариант исправления -- возвращать в операторе присваивания ссылку CAssignableClass&

CAssignableClass& operator=(const CAssignableClass &ob)
{
    this->x = ob.x;
    return *this;
}


Комментарии

comments powered by Disqus