<div>#include <iostream><br>using namespace std;</div> <div> </div> <div>class Time<br>{<br>private:<br> int hour;<br> int min;<br> int sec;<br> <br>public:<br> const Time operator+(Time);<br> Time& operator++();<br> void Outtime();<br> <br>};</div> <div><br>const Time Time::operator+(Time &time)<br>{<br> Time C;<br> <br> C.sec=sec+time.sec;<br> C.min=min+time.min;<br> C.hour=hour+time.hour;<br> <br> C.min+=C.sec/60;<br> C.sec%=60;<br> C.hour=C.min/60;<br> C.min%=60;<br> <br> return C;<br>}</div> <div><br>Time& Time::operator++()<br>{<br> sec++; <br> <br> min+=sec/60;<br> sec%=60;<br> hour=min/60;<br> min%=60;<br> <br> return *this;<br>}</div> <div> </div> <div> </div> <div> </div> <div>Time 이라는 클래스에 대해서 똑같은 타입간의 합과 전위 연산자++ 에 대해서 연산자 오버로딩을 한 모습입니다.</div> <div> </div> <div>제가 여기서 궁금한것은</div> <div> </div> <div>왜 둘의 타입이 각각 값과 레퍼런스로 나뉘어 젔음에도 둘다 연산의 연계가 가능하느냐 입니다.</div> <div> </div> <div>우선 +오버로딩을 보시면</div> <div> </div> <div>값으로 반환했음에도 불구하고</div> <div> </div> <div>Time A,B,C,D;</div> <div>D=A+B+C;</div> <div>위의 코드에서</div> <div> </div> <div>A+B의 결과 반환된 값을 이용해서 곧바로 +C 까지의 연산이 가능하다는 것입니다.</div> <div> </div> <div>하지만 ++오버로딩에서</div> <div> </div> <div>반환타입을 레퍼런스가 아닌 값으로 바꾸게 되면</div> <div> </div> <div>++++A;</div> <div>와 같은 연산이 연계해서 사용 불가능하고 1만 상승하게 되더군요...</div> <div> </div> <div>결론적으로는</div> <div> </div> <div><font style="background-color:rgb(146,205,220);">operator+와 operator++ 둘다 값을 반환하도록 코딩하였을때</font></div> <div><font style="background-color:rgb(146,205,220);">왜 operator+는 연산의 연계가 가능하며(D=A+B+C)</font></div> <div><font style="background-color:rgb(146,205,220);">operator++는 왜 연산의 연계가 불가능 한것인가요??(++A)</font></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.