Мы обсудили перегрузку оператора присваивания для динамически распределяемых ресурсов здесь . Это продолжение предыдущего поста. В предыдущем посте мы обсуждали, что когда мы не пишем свой собственный оператор присваивания, созданный компилятором оператор присваивания делает поверхностное копирование, и это вызывает проблемы. Что происходит, когда у нас есть ссылки в нашем классе и нет определенного пользователем оператора присваивания. Например, предсказать вывод следующей программы.
|
Выход:
Compiler Error: non-static reference member 'int& Test::ref', can't use default assignment operator
Компилятор не создает оператор присваивания по умолчанию в следующих случаях
1. Класс имеет нестатический член данных типа const или ссылочного типа.
2. Класс имеет нестатический элемент данных типа, который имеет недоступный оператор присваивания копии
3. Класс является производным от базового класса с недоступным оператором присваивания копии
Когда любое из вышеприведенных условий выполняется, пользователь должен определить оператор присваивания. Например, если мы добавим оператор присваивания в приведенный выше код, код будет работать без ошибок.
|
Выход:
10
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Проверка самостоятельного назначения в операторе назначения
- Является ли оператор присваивания унаследованным?
- Когда мы должны написать наш собственный оператор присваивания в C ++?
- Конструктор копирования против оператора присваивания в C ++
- Ссылки на C ++
- Почему переопределение как глобального нового оператора, так и оператора, специфичного для класса, не является двусмысленным?
- Операторы присваивания в C / C ++
- C ++ | Отзывы | Вопрос 6
- Указатели против ссылок в C ++
- C ++ | Отзывы | Вопрос 4
- C ++ | Отзывы | Вопрос 1
- Указатели и ссылки на C ++
- C ++ | Отзывы | Вопрос 6
- C ++ | Отзывы | Вопрос 6
- Могут ли ссылки ссылаться на неверное расположение в C ++?
0.00 (0%) 0 votes