Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
adds
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
#1

Реализация класса - C++

14.09.2011, 08:57. Просмотров 1145. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2011, 08:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализация класса (C++):

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

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

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

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

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

Реализация класса полином - C++
Help((( #ifndef CLASS_POLINOM_CPP #define CLASS_POLINOM_CPP class Polynom { private: unsigned int deg; //bazmandami...

9
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
14.09.2011, 09:26 #2
adds, В конструкторе соответственно выделить память под объект в кол-ве size. В конструкторе копирования - соответственно скопировать (т.е. выделить память, скопировать, скопировать размер) - профит.
0
adds
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
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
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
adds
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
14.09.2011, 10:09  [ТС] #5
благодарю
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
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
adds
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, надо же, похоже, кто-то у кого-то свистит задания

0
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 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
14.09.2011, 15:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 15:04
Привет! Вот еще темы с ответами:

Определение и реализация класса. - C++
Есть два кода: 1) Объявление класса #include &lt;winioctl.h&gt; #define FILE_DEVICE_WINIO 0x00008010 #define WINIO_IOCTL_INDEX...

Реализация конструктора класса - C++
Здравствуйте! Хотел задать такой вопрос: Предположим, имеется класс: class Object { private: int itsVal1; int...

Реализация класса стэк - C++
Необходимо реализовать методы класса СТЭК. Все методы должны возвращать true в случае удачного завершения и false в противном случае.

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


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

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

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