-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
[04:58] 연습문제 9-> 0, 0->9 로 돌아가게 하는 법
20.01.05 06:44 작성 조회수 136
2
안녕하세요.
연습문제 풀어봤습니다.
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& out, const 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;
}
감사합니다.
답변을 작성해보세요.
2
답변 1