[04:58] 연습문제 9-> 0, 0->9 로 돌아가게 하는 법

미해결질문
호두 프로필

안녕하세요.

연습문제 풀어봤습니다.

9에서 ++ 하면 0이 되게 하는 부분은

m_digit == 9 일 때는 그냥 m_digit에 0을 대입 했습니다.

<코드>

Digit& Digit::operator ++ ()
{
    if (m_digit == 9)
    {
        m_digit = 0;
    }
    else
    {
        ++m_digit;
    }
    
    return *this;
}

Digit& Digit::operator -- ()
{
    if (m_digit == 0)
    {
        m_digit = 9;
    }
    else
    {
        --m_digit;
    }
    
    return *this;
}

Digit Digit::operator ++ (int)
{
    Digit temp(m_digit);
    // m_digit++;
    ++(*this);

    return temp;
}
Digit Digit::operator -- (int)
{
    Digit temp(m_digit);
    // m_digit++;
    --(*this);

    return temp;
}

<출력>

PS C:\coding\tbcpp_review\Chapter9> .\a.exe    

prefix --0

9

9

prefix ++9

0

0

postfix 0--

0

9

postfix 9++

9

0

<전체코드>

#include <iostream>
using namespace std;

class Digit
{
private:
    int m_digit;

public:
    Digit(int digit = 0) : m_digit(digit) {}

    // prefix
    Digit& operator ++ ();
    Digit& operator -- ();

    // postfix
    Digit operator ++ (int);
    Digit operator -- (int);


    friend ostream& operator << (ostream& outconst Digit &digit)
    {
        out << digit.m_digit;
        return out;
    }
};

Digit& Digit::operator ++ ()
{
    if (m_digit == 9)
    {
        m_digit = 0;
    }
    else
    {
        ++m_digit;
    }
    
    return *this;
}

Digit& Digit::operator -- ()
{
    if (m_digit == 0)
    {
        m_digit = 9;
    }
    else
    {
        --m_digit;
    }
    
    return *this;
}

Digit Digit::operator ++ (int)
{
    Digit temp(m_digit);
    // m_digit++;
    ++(*this);

    return temp;
}
Digit Digit::operator -- (int)
{
    Digit temp(m_digit);
    // m_digit++;
    --(*this);

    return temp;
}

int main()
{
    Digit digit1(0);
    Digit digit2(9);
    Digit digit3(0);
    Digit digit4(9);

    cout << "prefix --0" << endl;
    cout << "--digit1(0) : " << --digit1 << endl;
    cout << "digit1(0) : " << digit1 << endl;

    cout << "prefix ++9" << endl;
    cout << ++digit2 << endl;
    cout << digit2 << endl;

    cout << "postfix 0--" << endl;
    cout << digit3-- << endl;
    cout << digit3 << endl;

    cout << "postfix 9++" << endl;
    cout << digit4++ << endl;
    cout << digit4 << endl;



    return 0;
}

감사합니다.

PP TREE 프로필
PP TREE 2020.01.05

나머지 연산자 쓰시는 방법도 있습니다. 자료구조에서 circular queue에서 많이 쓰지요.

지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스