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

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

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

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

14.09.2011, 08:57. Просмотров 1128. Ответов 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); ???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2011, 08:57     Реализация класса
Посмотрите здесь:

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

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

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

Реализация класса Цех - C++
#include <iostream> #include <string.h> using namespace std; class CEH { private: char imya ; char nachalnik...

Реализация класса контейнер. - C++
Естественно, это нужно сделать без использования подключаемых библиотек. Описать шаблон-класс нужно сначало. И затем программу, которая...

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

Реализация класса Directory - C++
Информационная запись о файле в каталоге содержит поля: имя файла, расширение, дата и время создания, атрибуты "только чтение", "скрытый",...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
14.09.2011, 09:26     Реализация класса #2
adds, В конструкторе соответственно выделить память под объект в кол-ве size. В конструкторе копирования - соответственно скопировать (т.е. выделить память, скопировать, скопировать размер) - профит.
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];
}
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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.
adds
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 14
14.09.2011, 10:09  [ТС]     Реализация класса #5
благодарю
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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>.
silent_1991
14.09.2011, 11:14
  #7

Не по теме:

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

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

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2011, 15:04     Реализация класса
Еще ссылки по теме:

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

Реализация класса С++ (плагин) - C++
Хорошего всем дня. Столкнулся с проблемой: Нужно написать плагин для существующей программы, исходного кода к ней нет. Из программы...

реализация класса строка - C++
не могу понять как реализовать ... помогите вот там где &quot;???????????&quot; там абсолютно непонятно, что мне делать.... задание: реализовать...

Реализация класса Library - C++
Задание: 1) Реализуйте класс Book, который является частью программного обеспечения библиотеки. Класс Book должен иметь члены для...

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


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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт С++
4933 / 2513 / 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]();
Yandex
Объявления
14.09.2011, 15:04     Реализация класса
Ответ Создать тему
Опции темы

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