// © Copyrights 2026 Praajna Pattada

#include <iostream>
#include <string>
#include <limits>

class Date
{
    private:
        int Day {};
        std::string Month {};
        int Year {};
        void ShowDate()
        {
            std::cout << "This program\'s compilation date is " << Day << " " << Month << " " << Year << "." << '\n';
        }

    public:
        // This is a constructor, which takes up three arguments
        Date(int a, std::string m, int y)
        {
            Day = a;
            Month = m;
            Year = y;
            std::cout << "Constructor called." << '\n';
            ShowDate();
        }
};

int main()
{
    // This is called 'Aggregate Initialization', which initializes the members of a struct or class in the order they are declared.
    Date Today { 10, "May", 2026 };
    
    std::cin.clear();
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    std::cin.get();
    return 0;
}
