12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
1 | |
Конструктор копий. Оператор присваивания04.09.2012, 14:42. Показов 1156. Ответов 11
Метки нет (Все метки)
В классе есть массив char (не динамический) размером 40 байт.
Вопрос1: нужно ли для такого класса определять конструктор копий или перегружать оператор присваивания или вполне подойдёт конструктор копий и оператор присваивания по умолчанию??? Вопрос2:Если в объект вышеописанного класса присвоить другому объекту того же класса, то верно ли, что при этом адрес массива в обоих объектах будет одинаковым или они будут ссылаться на разные участки памяти?
0
|
04.09.2012, 14:42 | |
Ответы с готовыми решениями:
11
Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * Конструктор копий и перегруженный оператор копирования Оператор присваивания через конструктор |
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.09.2012, 14:46 | 2 |
bgm313, 1) Подойдут.
2) На разные.
1
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
04.09.2012, 14:58 [ТС] | 3 |
Можете объяснить почему так. По моим представлениям массив это константный указатель, а оператор присваивание просто адрес одного массива присваивает другому.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.09.2012, 14:59 | 4 |
bgm313, Это массив, а не указатель. Делается копирование элементов массива.
1
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
04.09.2012, 15:04 [ТС] | 5 |
Массив это разме не тоже самое, что, например, char * const val?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.09.2012, 15:05 | 6 |
bgm313, Очевидно нет. Массив не является указателем. Он может приводиться к указателю, но сам является массивом.
0
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
04.09.2012, 15:10 [ТС] | 7 |
А чем они отличаются вы можете сказать? Такому указателю, который я описал выше необходимо присвоить алрес при объявлении, который далее нельзя изменять.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.09.2012, 15:14 | 8 |
bgm313, Я даже не могу объяснить чем отличаются абсолютно разные сущности... Ну как бэ... Чем отличается пиво и чипсы? Вырезка из стандарта про массивы.
1
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
04.09.2012, 15:19 [ТС] | 9 |
Я немного подумал) Вот смотрите, если массив объявлен допустим из 40 элементов, то компилятор гарантировано не отдаст ни одну из этих ячеек памяти на стеке кому-то другому. Но, если мы имеем констатный указатель, то любая из ячеек на, который он указывает, если она не занята, может быть кому-то отдана. Может быть этим?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.09.2012, 15:26 | 10 |
0
|
12 / 12 / 3
Регистрация: 27.07.2012
Сообщений: 208
|
|
04.09.2012, 16:01 [ТС] | 11 |
Допустим в программе объявляется переменная. И если у нас есть константный указатель, то программа
может разместить эту переменную, например, в том месте, куда ссылается указатель. А если у нас есть массив из 40 элементов, то cpp гарантировано, не разместит эту переменную, ни в одной из этих ячеек.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
08.09.2012, 21:54 | 12 |
bgm313, если указатель не инициализирован, то он и указывает непонятно куда. Там может оказаться всё, что угодно, и эта память вообще может оказаться не принадлежащей вашей программе. Если же указатель указывает на выделенный по правилам блок памяти, то этот блок наверняка никто другой уже забрать и использовать не сможет, как и в случае с массивом.
0
|
08.09.2012, 21:54 | |
08.09.2012, 21:54 | |
Помогаю со студенческими работами здесь
12
Конструктор копирования и оператор присваивания Конструктор копирования и оператор присваивания Оператор присваивания через конструктор копирования Про конструктор копирования, оператор присваивания Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |