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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread187657.html
Все привет! Возник вопрос. Имеется текстовый файл. В нем есть несколько строк. Мне необходимо изменять их и добавлять новые данные в файл. Проблема, в том, что не могу поменять данные в файле, а...
C++ Класс Создать класс для работы с матрицей. Данные класса: матрица A(3×3). Открытые функции класса: ввод матрицы, вывод матрицы в квадратной форме, вывод на экран транспонированной матрицы. http://www.cyberforum.ru/cpp-beginners/thread187653.html
C++ Динамаческий массив
Люди, вот это прога находит координаты всехе седловых точек матрицы, если они есть. А должна ещё находить номер первой из строк, содержащей хотя бы один нуль. Вот как это сделать в моей...
C++ Функция, находящая сумму столбцов матрицы
int func7 (int**mass, int m, int n) { int*sum = new int; int i =0, i2=0; for( ; i<m ; i++ ) { int j=0, j2=0; for(;j<n ;j++,i2++) { sum = mass+sum;
C++ Заменить все четные элементы матрицы числом 0 http://www.cyberforum.ru/cpp-beginners/thread187630.html
Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы числом 0. Буду благодарен за помощь.
C++ Битовые поля Народ, напишите программу для включения 3-го разряда однобайтового числа и переключения 7-го. Никак не понимаю что и как...Напишите пож.. подробнее

Показать сообщение отдельно
pauline
0 / 0 / 0
Регистрация: 17.07.2007
Сообщений: 6

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

07.11.2010, 20:24. Просмотров 1243. Ответов 6
Метки (Все метки)

Здравствуйте форумчане.
Должна сразу сказать, что в своей практике с С++ сталкивалась мало, поэтому в нем считаю себя новичком. Но все же решила я повторить основные принципы ООП по книге Т.А. Павловской С/С++ программирование для вузов.
Добралась до перегрузки операции индексирования ("[]") и вот здесь возник принципиальный вопрос не только в синтаксисе написанного (он скорее всего верный), но и в общем понимании что же происходит.
Для демонстрации перегрузки создается класс, который хранит массив целых чисел
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru