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

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

Восстановить пароль Регистрация
 
Menma
 Аватар для Menma
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 20
11.05.2014, 16:28     Конструкторы C++ #1
Объясните, пожалуйста, своими словами, что являют собой конструкторы, для чего они нужны, в чем их преимущество перед аналогичными функциями?

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

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++ конструкторы
C++ конструкторы
Конструкторы C++
C++ Конструкторы
C++ Конструкторы С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
softirqd
0 / 0 / 0
Регистрация: 08.05.2014
Сообщений: 9
11.05.2014, 16:41     Конструкторы C++ #2
Конструктор служит для инициализации членов класса, создания объектов, необходимых для использования
класса и пр. подготовительные работы. Глупо пихать в конструктор логику приложения, или долговременное
интерактивное взаимодействие вроде cin>>, или прочие долговременные, зависящие от каких-то внешних
рантайм условий операции. В приведённом случае лучше сначала опросить пользователя, сформировать простой
массив/буфер с результатами и передать его в создаваемый класс, в конструкторе которого будет проинициализирован
указатель на буфер/массив.
xtorne21st
интересующийся
300 / 271 / 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];
        }
    }
};
Yandex
Объявления
11.05.2014, 16:45     Конструкторы C++
Ответ Создать тему
Опции темы

Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru