C++ various practice {class/ constructor destructor / Encapsulation}

 배운 것들을 토대로 이런 저런 것들을 합쳐보았다

#include <iostream>
#include <cassert>

class Fraction
{
private:
   int m_numerator; //분자
   int m_denominator; //분모

public:
   Fraction() //default constructor
   {
        std::cout << "Fraction constructed." << std::endl;
       m_numerator = 0;
       m_denominator = 1;
   }

   Fraction(int numerator, int denominator=1)
   {
       std::cout << "Fraction constructed with input." << std::endl;
       assert(denominator != 0);
       m_numerator=numerator;
       m_denominator=denominator;
   }

   ~Fraction()
   {
       std::cout<<"Fraction is deleted from memories." << std::endl;
   }
   void SetNumerator(int a) {m_numerator = a;}
   void SetDenominator(int b) {m_denominator = b;}
   int GetNumerator(){return m_numerator;}
   int GetDenominator(){return m_denominator;}
   double getValue(){return static_cast<double>(m_numerator)/ m_denominator;}
};


class Date
{
private:
    int m_year = 2021;
    int m_month = 10;
    int m_day = 23;

public:
    Date(){std::cout << "Date constructed." << std::endl;}

    ~Date(){
        std::cout << "Date is deleted from memories." << std::endl;
    }

    void SetDate(int year, int month, int day)
    {
        m_year = year;
        m_month = month;
        m_day = day;
    }
    int GetYear(){return m_year;}
    int GetMonth(){return m_month;}
    int GetDay(){return m_day;}
};


class Information
{
public:
    Fraction fraction;
    Date date;
    Information()
    {
    }
    ~Information()
    {
        std::cout << "Information deleted." << std::endl;
    }
};


int main()
{
    int a,b,c;

    Information* information = new Information;
    information->fraction.SetNumerator(2);
    information->fraction.SetDenominator(3);
    std::cout << information->fraction.GetNumerator()<<"/"<<information->fraction.GetDenominator()<<'\n' <<std::endl;

    std::cout<<"Year : ";
    std::cin>>a;
    std::cout<<"Month : ";
    std::cin>>b;
    std::cout<<"Day : ";
    std::cin>>c;
    std::cout<<std::endl;
    information->date.SetDate(a,b,c);
    std::cout << information->date.GetYear() <<"/"<<information->date.GetMonth()<<"/"<<information->date.GetDay() <<std::endl;

    //Fraction frac(2);
    //std::cout << frac.GetNumerator()<<"/"<<frac.GetDenominator()<<'\n' <<std::endl;
/*
    Date* date = new Date();
    std::cout<<"Year : ";
    std::cin>>a;
    std::cout<<"Month : ";
    std::cin>>b;
    std::cout<<"Day : ";
    std::cin>>c;
    std::cout<<std::endl;
    date->SetDate(a,b,c);
    std::cout << date->GetYear() <<"/"<<date->GetMonth()<<"/"<<date->GetDay() <<std::endl;

    delete date;
    */

    return 0;
}


댓글

이 블로그의 인기 게시물

About AActor!!! "UObject" has no member "BeginPlay"

UNREAL Android build information

C++ 생성자 위임 (delegating constructor)