Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба2 / Laba 2 (13)
.cpp#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
