#include <iostream>
#include <type_traits>
#include <cassert>

class Factoral
{
     public://begin public section
            unsigned int get_number() const { return its_number ; }
            void set_number(unsigned int number);//accessor member function
            unsigned int get_value() const { return its_value ; }
            void set_value ();
     private://begin private section
            unsigned int its_number;//member variable
            unsigned int its_value;//member variable
};

int main()
{
    std::cout << std::boolalpha
               << std::has_trivial_default_constructor<unsigned int>::value << '\n' // true
               << std::has_trivial_default_constructor<Factoral>::value << '\n' ; // true

    Factoral myFactoral{} ; // value initialized

    assert( myFactoral.get_number() == 0 && myFactoral.get_value() == 0 ) ;

    std::cout << myFactoral.get_number() << '\n' // 0
               << myFactoral.get_value() << '\n' ; // 0
}
