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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
#1

Начало ООП - C++

17.02.2013, 14:10. Просмотров 1474. Ответов 38
Метки нет (Все метки)

Привет всем! У меня началось изучение ООП и соответственно пошли классы. Первое задание - постpоить класс для pаботы с массивом. Класс должен включать соответствующие поля: максимальный размер массива, индекс текущего элемента, указатель на массив. Я так понимаю что полями будут переменные которые я объявляю в private? А что мы делаем в public? Объявляем функции которые потом буду работать с переменными из private? Или все операции будут производиться в теле класса? Или эти функции и будут в теле класса, а не за его пределами?
Прошу помочь разобраться! Буду очень благодарен за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 14:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Начало ООП (C++):

Начало ООП. Классы - C++
Здравствуйте.Читал про ссылки массивов на указатели, и указателей на массивы.Не могу понять как в этой программе как функции ссылаются на...

Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n). Подсчитать количес - C++
Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n)....

Все положительные элементы поместить в начало массива В(n), а отрицательные элементы — в начало массива С(n) - C++
Ребята. Помогите с задачей пожалуйста. Дан массив А(n). Все положительные его элементы поместить в начало массива В(n), а...

по ООП . - C++
Помогите пожалуйтса с решением задач ! на С++ 1.Дана неубывающая последовательность действительных чисел. Вставить в неё...

ООП - C++
наследование - понятно агрегация - понятно использование - не понятно. что такое использование? спасибо.

ООП - C++
#pragma hdrstop #pragma argsused //#include "Student.hpp" //#include "Prof.hpp" //#include "Personne.hpp" #include <conio.h> ...

38
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.02.2013, 14:17 #2
> Я так понимаю что полями будут переменные которые я объявляю в private?
Да.

> А что мы делаем в public? Объявляем функции которые потом буду работать с переменными из private?
Да.

> Или эти функции и будут в теле класса, а не за его пределами?
Да.
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 14:19  [ТС] #3
Спасибо! А для чего нужен раздел protected?
0
ValeryS
Модератор
6752 / 5161 / 493
Регистрация: 14.02.2011
Сообщений: 17,337
17.02.2013, 14:22 #4
Цитата Сообщение от AzgardC Посмотреть сообщение
Спасибо! А для чего нужен раздел protected?
для наследников
снаружи члены запрещены а для наследников разрешены
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 14:29  [ТС] #5
Ясно, т.е. protected мне здесь не понадобится , т.к. мне хватит только класса и его функций из паблика?

Добавлено через 3 минуты
И еще) А зачем нужен конструктор, разве я не могу инициализировать переменные из private прямо в функциях?
0
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
17.02.2013, 14:33 #6
Цитата Сообщение от AzgardC Посмотреть сообщение
Ясно, т.е. protected мне здесь не понадобится , т.к. мне хватит только класса и его функций из паблика?
Если нет наследования, то нет смысла и в protected.
Цитата Сообщение от AzgardC Посмотреть сообщение
И еще) А зачем нужен конструктор, разве я не могу инициализировать переменные из private прямо в функциях?
И каждый раз после создания объекта вручную вызывать эти функции? А если забудем - в переменных будет лежать мусор? Удобнее же создать конструктор, который будет инициализировать элементы объекта сразу при его создании.
0
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 14:41  [ТС] #7
Конструктор это же по сути функция? Есть какие-то особенности его написания. Если есть, то можно пожалуйста пример с комментами.
0
ValeryS
Модератор
6752 / 5161 / 493
Регистрация: 14.02.2011
Сообщений: 17,337
17.02.2013, 14:47 #8
Цитата Сообщение от AzgardC Посмотреть сообщение
Конструктор это же по сути функция? Есть какие-то особенности его написания.
самая главная особенность конструктор ничего не возвращает, даже void
вторая особенность конструктор всегда существует, даже если ты его не создашь создастся сам(неявный конструктор)
Который ничего не делает в простом классе, но если существует хоть одна виртуальная функция то конструктор создаст таблицу виртуальных функций
1
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
17.02.2013, 14:47 #9
AzgardC, имеет имя, совпадающее с именем класса, не имеет возвращаемого типа, может иметь список инициализации. Могут быть перегруженные версии конструкторов с разным количеством и типами параметров.

C++
1
2
3
4
5
6
7
8
class Test
{
public:
    Test() {data = 0;} // конструктор по умолчанию
    Test(int d) {data = d;} // конструктор с 1 параметром
private:
    int data; // элемент данных
};
Оно же, но со списком инициализации:
C++
1
2
3
4
5
6
7
8
class Test
{
public:
    Test() : data(0) {} // конструктор по умолчанию
    Test(int d) : data (d) {} // конструктор с 1 параметром
private:
    int data; // элемент данных
};
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 14:58  [ТС] #10
Спасибо большое! И тот же вопрос по деструктору. И где он пишется вообще?

Добавлено через 4 минуты
И всегда ли нужен деструктор?
0
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
17.02.2013, 15:01 #11
AzgardC, если используешь динамическое выделение памяти, то нужен, чтобы ее освобождать (как, собственно, и конструктор копирования и оператор присваивания).
1
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 15:06  [ТС] #12
Спасибо) А что из себя представляет конструктор копирования и для чего он нужен?(извините за нубство)))
0
ITcrusader
Эксперт С++
176 / 162 / 8
Регистрация: 12.02.2013
Сообщений: 410
17.02.2013, 15:52 #13
Нужен, если при создании объекта класса или в процессе его работы происходит захват каких-либо ресурсов, которые хорошая практика программирования на с++ требует освобождать.

Добавлено через 33 секунды
ах) опаздал про деструктор написать)
0
AzgardC
7 / 7 / 0
Регистрация: 18.10.2012
Сообщений: 81
17.02.2013, 16:56  [ТС] #14
ITcrusader, Все равно спасибо))

Добавлено через 51 минуту
Так. Народ, можете поругать меня за мой мой маленький код?))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <math.h>
#include <conio.h>
#include <time.h>
 
 
class massiv
{
private:
    int i,max,mas[100];// индекс лемента, макс. размер массива, массив
//  int *pmassi;// указатель на массив
public:
    massiv();// конструктор
    ~massiv();// деструктор
void neo(); // генерация массива
/*      void in(); //ф-я добавления нового элемента
    int search(); //ф-я поиска элемента
    int zam(); // ф-я замены элемента
    int del(); // ф-я удаления элемента
    void show(); //вывод массива
    */
    void massiv::neo()
    {
        time_t t;
        int j;
         cout << "Введите максимальный размер массива"<<endl;
         cin >> max;
         srand((unsigned)time(&t));
         for (j = 0; j < max; ++j) mas[j]=rand() %10 + 1;
         for (j = 0; j < max; ++j) {printf("\t%8.4f\n", mas[j]);}
 
    }}
Укажите мне на то, что я понял не так))) Буду благодарен за помощь! Очень!))
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.02.2013, 17:01 #15
3: Плохо с переносимостью, лучше не использовать древний conio родом из MS-DOS.
7: array
10: Лучше по-отдельности определять поля, вдруг надо будет тип менять.
13-14: А где реализации?
22: Если реализация внутри класса, то не надо писать квалификатор с двойным двоеточием.
22-32: Внимательно подумайте, кто должен заполнять массив данными: он сам себя или это всё же кто-то внешний даёт ему данные?
32: Точка с запятой после закрывающей скобки определения класса.
33: Где main()?
1
17.02.2013, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 17:01
Привет! Вот еще темы с ответами:

ООП в С++ - C++
Здравствуйте! Ответьте пожалуйста на несколько вопросов... p.s. буду рад , если ответы будут сопровождаться примерами :) Хочу...

ООП - C++
Господа у меня возникло 2 вопроса по ООП т.к. только не давно начал его изучать . 1) Не как не могу понять для чего умные люди его...

ООП - C++
Создать класс Vegetable, содержащий следующие элементы: - поле «вес» float Mass; - поле «зрелость» int Ripeness; - метод получения...

ООП - C++
Прочитал в википедии про ООП, но так толком и не понял. Подскажите, чем является создание программ с интерфейсом, допустим как калькулятор...


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

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

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