0 / 0 / 0
Регистрация: 12.02.2015
Сообщений: 11
|
||||||
1 | ||||||
Вставить конструктор копирования в программу24.02.2015, 20:38. Показов 675. Ответов 10
Метки нет (Все метки)
Составить описание класса одномерных массивов строк, каждая строка задается длиной и указателем на выделенную для нее память. Предусмотреть возможность обращения к отдельным строкам массива по индексам, контроль выхода за пределы массивов, выполнения операций поэлементного сцепления двух массивов с образованием нового массива, слияния двух массивов с исключением повторяющихся элементов, вывод на экран элемента массива и всего массива. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
Программа работает, помогите вставить конструктор копирования пожлауйста
0
|
24.02.2015, 20:38 | |
Ответы с готовыми решениями:
10
Добавить в программу конструктор копирования Добавить конструктор копирования в программу Подскажите пожалуйста как добавить конструктор копирования в готовую программу Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования |
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
24.02.2015, 21:55 | 2 |
Это вообще работает? Где там строки? Для чего нужны a и d?
0
|
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
|
||||||
24.02.2015, 21:59 | 3 | |||||
Как-то так:
0
|
28 / 28 / 5
Регистрация: 23.04.2014
Сообщений: 130
|
|||||||||||
25.02.2015, 01:11 | 4 | ||||||||||
otmenno74, ты наворотил конечно))) а зачем в С++ умные люди предусмотрели конструкторы с параметрами и перегрузку операторов?))) Например оператора [], с помощью которого ты мог бы осуществить адресное обращение к элементам массива
Добавлено через 1 минуту что это? даже несмотря на бессмысленность этих операций, тут идёт обращение к закрытым полям экземпляра класса, передаваемого по ссылке в качестве аргумента Добавлено через 10 минут Вот разбирайся с кодом, быстренько накидал. Нет проверки существования конструктора по умолчания для типа Т, так же как и оператора присваивания для этого же типа. Пользуйся встроенными пока что)
Пример создания экземпляра такого класса:
0
|
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
|
|
25.02.2015, 18:03 | 5 |
Это конструктор копирования с "deep copy". Метод класса имеет доступ к своим приватным полям. "Своим" это значит класс, а не конкретный объект.
0
|
28 / 28 / 5
Регистрация: 23.04.2014
Сообщений: 130
|
|
25.02.2015, 21:44 | 6 |
поясни смысл конструкции. Я вижу тут только копирование числа, на которое указывает int * a и т.д. Он может указывать на массив
0
|
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
|
|
25.02.2015, 22:06 | 7 |
Да, int *a это в данном коде массив. Я посмотрел только первые 20 строчек кода. Кинул пример конструктора копирования. Понятно, что если это массив, то копировать надо весь кусок памяти. Deep copy это глубокое копирование(если кратко, это копирование данных указателя, а не самого указателя).
0
|
28 / 28 / 5
Регистрация: 23.04.2014
Сообщений: 130
|
|
25.02.2015, 22:24 | 8 |
MakeEasy, я знаю, что такое глубокое копирование, просто твой конструктор копирования его не особенно глубоко реализует) только первый элемент, и тот, по-моему, недоступен будет. Поэтому меня это и насторожило. Я не гуру С++, поэтому сейчас попробую скомпилировать такую конструкцию, что-то меня сомнения берут
Добавлено через 14 минут Собрал программу. Во-первых, раз уж ты хочешь переопределить конструктор копирования, то нужно переопределить конструктор по умолчанию и оператор присваивания. Во-вторых, код - это просто ад. Зачем 10 раз писать одни и те же куски? Кто вас так учит писать код? Неужели самому не видно, что это переизбыток, каша, которую невозможно разбирать. Проектируй программу, потом пиши код
0
|
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
|
||||||
25.02.2015, 22:25 | 9 | |||||
int *a это указатель на один инт, как char* указатель на один char. В чем проблема? Когда я писал тот кусочек кода, я не знал что этот указатель используется как массив. По этому предположил что это просто указатель на один инт.
Я не совсем понимаю, почему он должен быть недоступен.
0
|
28 / 28 / 5
Регистрация: 23.04.2014
Сообщений: 130
|
|
25.02.2015, 22:33 | 10 |
MakeEasy, да, действительно, был неправ) конструктор копирования работает на отлично, за исключением того, что копирует только первые значения массивов
0
|
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
|
|
25.02.2015, 22:39 | 11 |
Да ничего, я тоже ошибся). Не увидел что указатель используется как массив.
0
|
25.02.2015, 22:39 | |
25.02.2015, 22:39 | |
Помогаю со студенческими работами здесь
11
Конструктор класса, конструктор копирования запускается не тот который нужен Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику Конструктор инициализации, конструктор копирования, деструктор Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |