<a target="_blank" href="http://msdn.microsoft.com/ko-kr/library/7ac5szsk.aspx">http://msdn.microsoft.com/ko-kr/library/7ac5szsk.aspx</a> <div>ㄴ코드 참조</div> <div><br></div> <div><pre style="line-height:17.5499992370605px;padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-family:Consolas, Courier, monospace;"><b></b></pre><pre style="line-height:17.5499992370605px;padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-family:Consolas, Courier, monospace;"><b></b></pre></div> <div><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-size:13px;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">// Define assignment operator. Point &Point::operator=( Point &ptRHS ) { _x = ptRHS._x; _y = ptRHS._y; return *this; // Assignment operator returns left side. } </pre></div> <div><br></div> <div>부분에</div> <div><br></div> <div><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-size:13px;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">pt1 = pt2 = pt3; 연속 대입문을 위한 할당연산입니다.</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-size:13px;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><br></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-size:13px;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">여기서 </pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-size:13px;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><br></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;font-size:13px;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">void Point::operator=(const Point &rhs) { _x = <span style="line-height:17.5499992370605px;">rhs</span><span style="line-height:17.5499992370605px;">._x;</span><br> _y = <span style="line-height:17.5499992370605px;">rhs</span><span style="line-height:17.5499992370605px;">._y;</span>}</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">연산자 오버로딩을 했습니다.</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">이 연산자는 <span style="line-height:17.5499992370605px;">pt1 = pt2 = pt3; 와 같은 연속 대입문을 사용할 수 없습니다.</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;"><br></span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">전문가를 위한 c++ 에서는 </pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">대입연산자를 void를 하든 상식적으로 연산자가 호출된 객체의 참조를 리턴하도록 권장합니다. 라고 말합니다.</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><br></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">Point& operator=( Point &ptRHS )</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;">void operator=(const Point &rhs)</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;"><br></span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">로 오버로딩은 가능하지만</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;">Point& operator=(const Point &ptRHS )</pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;">void operator=(const Point &rhs)</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;">불가능합니다.</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;"><br></span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;"><br></span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;">하지만 Point에 대한 값을 변경하지 않으므로 </span><span style="line-height:17.5499992370605px;">const를 붙이는게 맞습니다만 파라미터의 갯수로 함수의 다름을 판단하므로</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;">const를 제거하여 쓰면 되지만 </span><span style="line-height:17.5499992370605px;"> 꼼수처럼 보입니다.</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;"><br></span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;"><br></span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><span style="line-height:17.5499992370605px;">질문 사항은 assignment operator </span><span style="line-height:17.5499992370605px;">(operator=) </span><span style="line-height:17.5499992370605px;">의 정석이 뭔지 궁금합니다.</span></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><br></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><br></pre><pre style="padding:5px;margin-top:0px;margin-bottom:0px;overflow:auto;line-height:17.5499992370605px;font-family:Consolas, Courier, monospace;"><br></pre></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.