Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
3.55 Кб
Скачать
#include <iostream>
#include <windows.h>
using namespace std;

class Date {
private:
    int day, month, year;
    static Date today;
    
public:
    static int count;
    
    // Конструкторы
    Date(int d, int m, int y) : day(d), month(m), year(y) { 
        count++;
        cout << "Создана дата: " << day << "." << month << "." << year << endl;
    }
    
    Date(int d, int m) : day(d), month(m), year(today.year) { 
        count++;
        cout << "Создана дата: " << day << "." << month << "." << year << endl;
    }
    
    Date(int d) : day(d), month(today.month), year(today.year) { 
        count++;
        cout << "Создана дата: " << day << "." << month << "." << year << endl;
    }
    
    Date() : day(today.day), month(today.month), year(today.year) { 
        count++;
        cout << "Создана дата по умолчанию: " << day << "." << month << "." << year << endl;
    }
    
    // Конструктор копирования
    Date(const Date& other) : day(other.day), month(other.month), year(other.year) { 
        count++;
        cout << "Создана копия даты: " << day << "." << month << "." << year << endl;
    }
    
    // Деструктор
    ~Date() { 
        count--;
        cout << "Удалена дата: " << day << "." << month << "." << year 
             << " (осталось объектов: " << count << ")" << endl;
    }
    
    static void setToday(int d, int m, int y) {
        today.day = d;
        today.month = m;
        today.year = y;
        cout << "Установлена сегодняшняя дата: " << d << "." << m << "." << y << endl;
    }
    
    void print() const {
        cout << day << "." << month << "." << year;
    }
    
    // Геттеры для доступа к полям
    int getDay() const { return day; }
    int getMonth() const { return month; }
    int getYear() const { return year; }
};

// Инициализация статических членов
Date Date::today(1, 1, 2024);
int Date::count = 0;

int f() {
    Date d1(1, 1, 2009), d2(28, 2), d3, d4 = d1;
    return d1.count + Date::count;
}

int main() {
    SetConsoleOutputCP(65001);
    SetConsoleCP(65001);
    
    cout << "=== Задание 2.13 - Класс Date ===" << endl;
    
    Date::setToday(15, 5, 2024);
    
    cout << "\nРазличные способы создания объектов Date:" << endl;
    Date d1;              // сегодняшняя дата
    Date d2(10);          // 10 число текущего месяца и года
    Date d3(15, 6);       // 15 июня текущего года
    Date d4(1, 1, 2023);  // 1 января 2023
    
    cout << "\nТестирование функции f():" << endl;
    int result = f();
    cout << "Результат f(): " << result << endl;
    
    cout << "\nТекущее количество объектов Date: " << Date::count << endl;
    
    cout << "\nСоздание временных объектов:" << endl;
    {
        Date temp(25, 12, 2024);
        cout << "Внутри блока - объектов: " << Date::count << endl;
    }
    cout << "После блока - объектов: " << Date::count << endl;
    
    cout << "\nКоличество объектов перед завершением: " << Date::count << endl;
    
    return 0;
}
Соседние файлы в папке Лаба2