Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.07.2007
Сообщений: 6
1

Перегрузка операции индексирования, вопрос по синтаксису

07.11.2010, 20:24. Показов 1930. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте форумчане.
Должна сразу сказать, что в своей практике с С++ сталкивалась мало, поэтому в нем считаю себя новичком. Но все же решила я повторить основные принципы ООП по книге Т.А. Павловской С/С++ программирование для вузов.
Добралась до перегрузки операции индексирования ("[]") и вот здесь возник принципиальный вопрос не только в синтаксисе написанного (он скорее всего верный), но и в общем понимании что же происходит.
Для демонстрации перегрузки создается класс, который хранит массив целых чисел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <stdlib.h>
class Vect{
   public:
 explicit Vect (int n = 10);
 Vect(const int a[], int n); //инициализация массивом
 ~Vect(){delete [] p;}
 int& operator [] (int i);
 void Print;
...
 private 
   int* p;
   int size;
};
и далее идет определение методов класса
и здесь возникает вопрос в определении самого конструктора, оно выглядит так:
C++
1
2
3
  Vect::Vect(int n): size(n){
     p = new int[size];
}
Понятно, что после двоеточия поле size инициализируется значением n, но что значит запись
C++
1
  p = new int[size];
Инициализация указателя значением size??
и зачем тогда нужно создавать второй метод следующий за конструктором
C++
1
2
3
4
  Vect::Vect(const int a[], int n): size(n){
  p = new int[size];
  for(int i = 0; i<size; i++) p[i] = a[i];
}
Почему нельзя это сделать в одном конструкторе??
Буду очень рада, если кто-нибудь разъяснит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2010, 20:24
Ответы с готовыми решениями:

перегрузка индексирования
на пример как перегрузить оператор индексирования с 2-мя параметрами: f

Перегрузка индексирования строками
Пишу динамический массив, состоящий из строк. Возможно ли перегрузить оператор индексирования для...

Перегрузка оператора индексирования
Всем привет! Ситуация такая - есть 2 класса, поле одного класса является массивом из элементов...

Перегрузка оператора индексирования
Собсно код с книжки списал. Понятно что данный класс на векторе построен (понятно, что можно на...

6
 Аватар для Kastaneda
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
07.11.2010, 20:32 2
Второе - это не метод, это тоже конструктор. В книге должно быть объяснено значение слова explicit

Не по теме:

Хотя, говорят, книга Т.А. Павловской - "бумагомарание", там даже основы кое как даны.

0
 Аватар для KpeHDeJIb
57 / 57 / 5
Регистрация: 31.10.2010
Сообщений: 103
07.11.2010, 20:38 3
Цитата Сообщение от Kastaneda Посмотреть сообщение
В книге должно быть объяснено значение слова explicit
Ну это к вопросу топик кастера напрямую не относится.

Цитата Сообщение от pauline Посмотреть сообщение
p = new int[size];
Это выделение динамической памяти, достаточной для хранения массива элементов типа int в количестве size штук.
0
0 / 0 / 0
Регистрация: 17.07.2007
Сообщений: 6
08.11.2010, 07:52  [ТС] 4
В книге должно быть объяснено значение слова explicit
Объяснение действительно есть.
Не по теме:
Хотя, говорят, книга Т.А. Павловской - "бумагомарание", там даже основы кое как даны.
Может тогда посоветуйте хорошую книгу по ООП, лучше конечно с примерами на С++
0
 Аватар для Kastaneda
5232 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
08.11.2010, 09:27 5
Так по ООП или C++ ? Если по ООП с примерами на С++, то для начинающих советуют вот эту "Гради Буч "Объектно-ориентированный анализ и проектирование"", сам пока не прочитал (но собираюсь))
1
0 / 0 / 0
Регистрация: 17.07.2007
Сообщений: 6
08.11.2010, 09:49  [ТС] 6
Спасибо за совет.
Хоть ООП это и общая парадигма и реализована во многих языках, хотелось все-таки с примерами на С++
Язык сложный, и если разобрать примеры на нем, то думаю в других языках уже не запутаюсь. Впрочем тут можно и поспорить.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
08.11.2010, 09:58 7
Цитата Сообщение от pauline Посмотреть сообщение
p = new int[size];
Выделение памяти под intы в количестве size и присваивание p указателя на эту память. Ничего общего с перегрузкой, тем более оператора индексации это не имеет.

Добавлено через 2 минуты
Цитата Сообщение от pauline Посмотреть сообщение
Инициализация указателя значением size??
и зачем тогда нужно создавать второй метод следующий за конструктором
Чтоб полностью иницировать массив, а не только зарезервировать под него место на основе размера. То есть чтоб сразу задать значения элементов. И это пока не методы, а конструкторы.

Добавлено через 6 минут
Цитата Сообщение от pauline Посмотреть сообщение
Хоть ООП это и общая парадигма и реализована во многих языках,
То то и оно, что это только парадигма, то есть всего лишь подход к программированию. В отрыве от языка её учить бесполезно. А вот учить программирование с использованием этого подхода и конкретного языка (c++ - вполне нормальный вариант) - имеет смысл. Поэтому учишь ООП - выбери язык (или согласись с чужим выбором). И не слушай тех, кто будет говорить, что парадигма от языка не зависит. Язык тоже от железа не зависит, а компилятор зависит.
1
08.11.2010, 09:58
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2010, 09:58
Помогаю со студенческими работами здесь

Перегрузка оператора индексирования
Что-то не выходит каменный цветок. Определение класса: struct TEventData { char strComputerName;...

Перегрузка оператора индексирования для <map>
Вопрос: как правильно перегрузить оператор для контейнера map, который принадлежит к классу?...

Перегрузка оператора индексирования для контейнера list
Здравствуйте помогите перегрузить оператор индексирования для контейнера list это последнее...

Перегрузка оператора индексирования для обращения к элементам по имени
Доброго времени суток! Столкнулся с проблемой перегрузки оператора индексирования при разработке...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru