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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread187657.html
Все привет! Возник вопрос. Имеется текстовый файл. В нем есть несколько строк. Мне необходимо изменять их и добавлять новые данные в файл. Проблема, в том, что не могу поменять данные в файле, а также добавить. #include "stdafx.h" #include <iostream> #include <fstream> #include <iomanip> #include <stdlib.h>
C++ Класс Создать класс для работы с матрицей. Данные класса: матрица A(3×3). Открытые функции класса: ввод матрицы, вывод матрицы в квадратной форме, вывод на экран транспонированной матрицы. http://www.cyberforum.ru/cpp-beginners/thread187653.html
C++ Динамаческий массив
Люди, вот это прога находит координаты всехе седловых точек матрицы, если они есть. А должна ещё находить номер первой из строк, содержащей хотя бы один нуль. Вот как это сделать в моей программе??? Плз помогите) #include <iostream>
C++ Заменить все четные элементы матрицы числом 0
Ввести двумерный массив целых чисел размерностью 2 на 4. Заменить все четные элементы числом 0. Буду благодарен за помощь.
C++ Битовые поля http://www.cyberforum.ru/cpp-beginners/thread187628.html
Народ, напишите программу для включения 3-го разряда однобайтового числа и переключения 7-го. Никак не понимаю что и как...Напишите пож..
C++ Двумерный массив. Перемещение строк местами. Помогите разобраться пожалуйста, что не так? Задание выглядит так Составить программу, которая получает матрицу В размером m *n и два числа i<m и j<m. Если матрица в каждой четной строке имеет положительную сумму элементов, то программа формирует новую матрицу, меняя местами элементы строки с номером i на элементы строки с номером j исходной матрицы В #include <iostream> using... подробнее

Показать сообщение отдельно
pauline
0 / 0 / 0
Регистрация: 17.07.2007
Сообщений: 5
07.11.2010, 20:24     Перегрузка операции индексирования, вопрос по синтаксису
Здравствуйте форумчане.
Должна сразу сказать, что в своей практике с С++ сталкивалась мало, поэтому в нем считаю себя новичком. Но все же решила я повторить основные принципы ООП по книге Т.А. Павловской С/С++ программирование для вузов.
Добралась до перегрузки операции индексирования ("[]") и вот здесь возник принципиальный вопрос не только в синтаксисе написанного (он скорее всего верный), но и в общем понимании что же происходит.
Для демонстрации перегрузки создается класс, который хранит массив целых чисел
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];
}
Почему нельзя это сделать в одном конструкторе??
Буду очень рада, если кто-нибудь разъяснит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru