[알고리즘]

LHS 변수 와 RHS 변수 란 무엇인가?

Neo Park 2013. 4. 3. 09:37

 

연산자 함수를 만들 경우 함수의 매개변수를 적어줄때 변수 이름으로 lhs(Left Hand Side) 와 rhs(Right Hand Side) 를 많이 사용한다.

매개변수가 두개일 경우 첫번째 매개변수에 lhs, 두번째 매개변수는 rhs 로 사용하고
매개변수가 하나일 경우 rhs 로 대부분의 개발자들이 많이 쓰고있다.
여기서 궁금한 것 한가지
나라면 매개변수가 하나일땐 lhs 로 사용할것 같다는것이다.
왜냐하면 사람이 글을 쓸때 왼쪽부터 오른쪽으로 쓴다. 코드도 한줄만 보면 왼쪽에서 오른쪽으로 짠다. class CBase 이것만 봐도 시작은 맨 왼쪽의 c 이다.
그렇다면 첫번째 매개변수는 lhs 로 사용 하는게 더 맞는것이 아닐까 ? 왜 대부분의 사람들은 rhs 로 사용을 하고있을까 그 이유가 궁금해졌다.
간단하게 설명을 하면,
int iVal;
iVal = iVal + 10 ; // iVal += 10;
iVal + 10 은
iVal.operator + (10); 이런 형식이 된다.
여기서 lhs 는 iVal 자기 자신이고 rhs는 10이다.
그렇기 때문에 lhs를 따로 쓸필요가 없다는것.
lhs 를 사용하는경우
lhs 를 사용하는 경우는 클래스 외부의 함수로 10 + iVal; 과 같이 했을 경우 (iVal 은 class 로 봐야함)
10.operator+(iVal) 이런건 존재 하지 않기 때문에 10을 계산 가능한 객체로 바꿔줘야 하기때문에
operator +(lsh, rhs) 라는 일반함수를 써야된다.

그냥 변수 이름으로 많이 사용한다 정도로만 생각했지만 객체지향프로그래밍(oop) 의 특성을 생각하여 사용한다는 점이 인상깊었던 부분.

 

 

 

참조 : http://blog.naver.com/orengemamma?Redirect=Log&logNo=150158057301