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

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

Войти
Регистрация
Восстановить пароль
 
Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
#1

Конструкторы C++ - C++

11.05.2014, 16:28. Просмотров 403. Ответов 2
Метки нет (Все метки)

Объясните, пожалуйста, своими словами, что являют собой конструкторы, для чего они нужны, в чем их преимущество перед аналогичными функциями?

И, допустим, у меня есть программа с классом, а в классе содержится член-функция для инициализации массива пользователем с клавиатуры:

C++
1
2
3
4
5
6
7
8
9
10
void vvod()
{
    cout << "Укажите размерность массива: ";
    cin >> n;
    for (int i = 0; i < n; i++)
        {
            cout << "Enter massiv ["<<i<<"]: ";
            cin >> massiv[i];
        }
}
Ее нужно заменить конструктором. Не могу понять, как это осуществить: в самом классе и в int main()
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2014, 16:28     Конструкторы C++
Посмотрите здесь:

Конструкторы - C++
Почему, если класс имеет конструктор с параметрами у него обязательно должен быть конструктор по умолчанию?

Конструкторы и деструктор - C++
В общем, пишу прогу на классы. Уже написал (суть в том чтобы вывести значения диагоналей, периметра и площади ромба), но не заметил что...

Конструкторы и классы - C++
Определить класс список элементов. В определение класса включить два конструктора: для определения списка по его размеру и путем...

Классы, конструкторы - C++
В понедельник последний день сдачи лабы. На выбор сделать одну из них: №1 Делать через классы и конструкторы. С использованием...

Конструкторы и деструкторы - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; class Try { public: void* px; Try() { printf(&quot;Try\n&quot;); px=malloc(12); }; ...

Конструкторы. синтаксис - C++
Добрый вечер! Не совсем понятно, как описываются конструкторы: что в круглых скобках, что в фигурных, когда нужно двоеточие. Например: ...

Указатели и конструкторы - C++
Всем доброго времени суток!!! Выполняя упражнение Лафоре 10 главы №1 написав и проверив всё столкнулся с такой проблемой. Проще...

Конструкторы по умолчанию. - C++
Здравствуйте, возник вопрос. Только что минут 10 въезжал что у меня не так. Суть вот в чем. Есть некий класс, в моем случае например digit....

Классы и конструкторы - C++
#include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; class automobile//создаём класс automobile ...

Конструкторы классов - C++
Помогите разобраться с классами, не пойму как мне сделать правильно конструкторы класса Application,выдвёт ошибки в его конструкторе,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
softirqd
0 / 0 / 0
Регистрация: 08.05.2014
Сообщений: 9
11.05.2014, 16:41     Конструкторы C++ #2
Конструктор служит для инициализации членов класса, создания объектов, необходимых для использования
класса и пр. подготовительные работы. Глупо пихать в конструктор логику приложения, или долговременное
интерактивное взаимодействие вроде cin>>, или прочие долговременные, зависящие от каких-то внешних
рантайм условий операции. В приведённом случае лучше сначала опросить пользователя, сформировать простой
массив/буфер с результатами и передать его в создаваемый класс, в конструкторе которого будет проинициализирован
указатель на буфер/массив.
xtorne21st
интересующийся
303 / 274 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.05.2014, 16:45     Конструкторы C++ #3
Конструкторы нужны для инициализации объекта. Например есть класс Point и мы можем инициализировать его объект несколькими способами: 1) фнукциями Point::setX(int x), Point::setY(int y), но фактически после создания объекта и до его инициализации (в нашем случаи функциями setX() и setY()) сам по себе объект не имеет смысла... и 2-й способ, который, является наиболее приемлемым с точки зрения подхода ООП - создать конструктор, котрый будет при создании объекта сразу его инициализировать: Point::Point(int x, int y);
В вашем случаи функцию void vvod(), можно (но необязательно) переименовать в void init() - что более ясно отображает значение и сделать её приватной (ограничить доступ из вне) и просто её вызвать в конструкторе. Например ваш класс называется MyMassive:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class MyMassive
{
public:
    MyMassive() // Это и есть конструктор (такое же имя как и у класса)
    {
        init();
    }
 
private:
    void init()
    {
        cout << "Укажите размерность массива: ";
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cout << "Enter massiv ["<<i<<"]: ";
            cin >> massiv[i];
        }
    }
};
Ответ Создать тему
Опции темы

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