Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
1

Реализация класса

14.09.2011, 08:57. Показов 2135. Ответов 9
Метки нет (Все метки)

Так как только начал изучать с++, возникает вопрос:
есть задание :
Реализовать класс IntArray. Разработать тестовую программу для проверки работоспособности класса (т.е. необходимо убедиться в работоспособности всех конструкторов и операторов класса, а также всех его методов). Для этого достаточно делать распечатку массива после выполнения каждой операции, которая может изменять его содержимое.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class IntArray
{
public: // открытая часть, или интерфейс класса
IntArray(int sz = 12); // конструктор по умолчанию
IntArray(const IntArray &rhs); // копирующий конструктор
IntArray(int *array, int sz); // инициализация встроенным массивом
~IntArray() {delete[] pia;} // Деструктор, освобождает память,
// занятую объектом
int size(); // возвращает размер массива;
int min(); // возвращает минимальный и
int max(); // максимальный элемент
// объявление операторов для работы с объектами класса
bool operator== (const IntArray &rhs); // проверка на равенство
bool operator!= (const IntArray &rhs); // и неравенство массивов.
int& operator[] (int index); // оператор доступа к элементам массива
IntArray& operator = (const IntArray &rhs);// оператор присваивания
private: // закрытая часть, реализация класса
int _size; // размер текущего объекта массива;
int *pia; // указатель на встроенный массив, содержащий
// элементы объекта
};
Вопрос: Ни как не пойму что необходимо реализовать в первых двух конструкторах IntArray(int sz = 12); и IntArray(const IntArray &rhs); ???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2011, 08:57
Ответы с готовыми решениями:

Реализация класса на базе класса Stack с возможностью !индексирования!
Помогите пожалуйста!!! Нужно реализовать на базе класса stack другой класс с возможностью...

реализация класса
Дано: класс "Фильмы" (название, жанр, главные роли). Вопрос: Возможно ли такой подход к...

Реализация класса
Спроектировать и реализовать класс BigInt, позволяющий хранить целые числа в диапазоне , и...

Реализация класса
Помогите понять пожалуйста. Пример из Дейтела: #include "stdafx.h" #include <iostream> #include...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
9
В астрале
Эксперт С++
8032 / 4789 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
14.09.2011, 09:26 2
adds, В конструкторе соответственно выделить память под объект в кол-ве size. В конструкторе копирования - соответственно скопировать (т.е. выделить память, скопировать, скопировать размер) - профит.
0
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
14.09.2011, 09:51  [ТС] 3
ForEveR, то есть вот так должно выглядеть? :
C++
1
2
3
4
5
6
7
8
9
10
11
12
IntArray::IntArray(int sz)
{
     
     pia = new A[_size = sz];
     for(int i = 0; i < _size; i++);
}
IntArray::IntArray(const IntArray &rhs)
{
     pia = new A[_size];
     for(int i = 0; i < _size; i++)
         pia[i] = rhs.pia[i];
}
0
В астрале
Эксперт С++
8032 / 4789 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
14.09.2011, 09:55 4
Примерно да.

Инициализировать нулями забыл (в массиве мусор - нехорошо).
В копировании забыл скопировать размер.

Т.е.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
IntArray::IntArray(int sz)
{
     _size = sz;
     pia = new A[_size];
     for(int i = 0; i < _size; i++)
     {
         pia[i] = 0;
     }
}
IntArray::IntArray(const IntArray &rhs)
{
     _size = rhs._size;
     pia = new A[_size];
     for(int i = 0; i < _size; i++)
         pia[i] = rhs.pia[i];
}
Для копирования можно использовать memcpy или std::copy. Для заполнения std::fill или memset.
1
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
14.09.2011, 10:09  [ТС] 5
благодарю
0
1999 / 1599 / 488
Регистрация: 31.05.2009
Сообщений: 2,990
14.09.2011, 10:52 6
1)Добавь
C++
1
const int& operator[] (int index) const;
для константных объектов.
2) min, max и size тоже должны быть константными
C++
1
2
3
int size() const; 
int min() const;
int max() const;
3) Для размера массива и индексации лучше использовать std::size_t из <cstddef>.
0
silent_1991
14.09.2011, 11:14
  #7

Не по теме:

adds, СибГУТИ? ТП? Пудов?

0
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
14.09.2011, 13:34  [ТС] 8
silent_1991, Кемерово, КЕМГУ
0
silent_1991
14.09.2011, 14:36
  #9

Не по теме:

adds, надо же, похоже, кто-то у кого-то свистит задания :D

0
Эксперт С++
5025 / 2604 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.09.2011, 15:04 10
Цитата Сообщение от ForEveR Посмотреть сообщение
Инициализировать нулями забыл (в массиве мусор - нехорошо).
C++
1
2
3
4
5
6
7
8
9
IntArray::IntArray(int sz)
{
     _size = sz;
     pia = new A[_size];
     for(int i = 0; i < _size; i++)
     {
         pia[i] = 0;
     }
}
Что здесь значит A? Тип данных? В любом случае цикл не нужен. Достаточно просто вызвать "дефолтный конструктор" (даже не знаю как это назвать для базовых типов).
C++
1
pia = new int[_size]();
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2011, 15:04

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Реализация класса множества
Реализую класс множества. Некорректно работает удаление элемента из множества. Прошу помощи //...

Реализация шаблона класса
Большая-пребольшая просьба, помогите, пожалуйста, с решением данной задачи. Саму задачу реализовать...

Реализация класса proxy
Помогите, пожалуйста , реализовать вспомогательный класс proxy, который может работать как...

Реализация класса стека
Приветствую! Пробую написать класс стека, но работает не совсем так, как задумывалось. Что-то не...

Реализация класса String
Доброго времени суток! Пишу свой класс String (учусь). И возник вопрос по реализации. Имеется...

Реализация класса Vector
Добрый день всем! Пишу реализацию класса vector, но не могу разобраться, как написать ручные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.