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

Действие конструктора вобще не понял - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Возрастающая последовательность http://www.cyberforum.ru/cpp-beginners/thread952349.html
Задание: Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность. Код свой прикрепить не могу. Нужны простые примеры решения задания. Спасибо! :)
C++ О работе с динамическими двумерными (многомерными) массивами Всех с наступающим профессиональным праздником, многоуважаемые гуру С++! задачка простая - работа с данными в двумерном динамическом массиве (просто пример :) ) Код: #include <iostream> using namespace std; void Input(int**, int, int); void Output(int**, int, int); http://www.cyberforum.ru/cpp-beginners/thread952340.html
Вывести последовательность из цифр огромного числа C++
Задание во вложении. Собственно код: #include <iostream> #include <math.h> using namespace std; double factorial(int to); double exponential(int to, int basis);
Массив длиной 10 разделить на два массива четных и нечетных чисел C++
массив длиной 10 разделить на два массива четных и нечетных чисел #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused #include <iostream> #include <ctime> #include <iomanip>
C++ Найти произведение нечетных чисел, делящихся на 3 http://www.cyberforum.ru/cpp-beginners/thread952311.html
ввести с клавиатуры 10 элементов массива , отсортироваь их по убыванию ,сложить все четные и не четные ,найти произведение нечетных чисел делящихся на 3
C++ Выполнить программу с использованием пользовательских функций Помогите переписать данную программу, но уже с использованием пользовательских функций. #include <vcl.h> #pragma hdrstop #include <iostream.h> #include <math.h> #include <tchar.h> void main(void) { подробнее

Показать сообщение отдельно
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
11.09.2013, 14:08     Действие конструктора вобще не понял
поясню назначение конструкторов.

Допустим есть класс для хранения даты рождения:
У него отсутствует конструктор, но есть две функции. одна устанавливает дату, другая печатает дату

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
class BirthDate
{
private:
    int day;    // допустимые значения 1..31 (в разные месяцы по-разному)
    int month;  // 1..12
    int year;   // приблизительно 1900..2100 (можно другое установить)
 
public:
    void SetDate(int d, int m, int y)
    {
        day = (d>=1 && d<=31) ? d : 1;
        month = (m>=1 && m<=12) ? m : 1;
        year = (y>=1900 && y<=2100) ? m : 1900;
    }
 
    void Show() const
    {
        cout << day << "/" << month << "/" << year << endl;
    }
};
 
 
int main()
{
    BirthDate   d;
 
    // случайно забыли вызвать функцию для установки даты
 
    d.Show();   // 0/0/2147315712
 
    return 0;
}
даты 0/0/2147315712 вообще не существует и последствия от этого в дальнейшем могут оказаться печальными

Но если бы у нас был конструктор
C++
1
2
3
4
BirthDate(int d, int m, int y)
{
    SetDate(d, m, y);
}
то уже пришлось бы создавать объект таким способом:
BirthDate d(11, 9, 2013);

т.е. точно указывать дату рождения. и по другому никак.
следовательно в объекте d в принципе не могут находится ошибочные данные,
т.к. при создании объекта автоматически вызывается конструктор, устанавливающий правильную дату
а все остальные попытки изменить ее проверяются функцией SetDate()
 
Текущее время: 16:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru