본문 바로가기

2009/0226

LValue 와 RValue 차이점 LValue 와 RValue 차이점에 대해서 알아보자 1. LValue 는 의미그대로 왼쪽에 있는 의미합니다. A = B 일때 A는 LValue 가 되고, RValue 는 B 가 됩니다. LValue 에 올수 있는것은 변수가 올수 있고, 상수는 올수 없습니다. RValue 에는 변수, 상수값이 올수 있습니다. C 언어에서 배열명은 상수주소 이므로 LValue 에 올수 없습니다. ex)char c_arr [10]; c_arr = "12345"; 사용할수 없구요, strcpy를 이용해서 값을 처리하게 됩니다. 스트링함수 또는 메모리관련 (memcpy)등을 이용해서 처리한다. [출처] LValue 와 RValue 값에 대해서 |작성자 gangi000 2009. 2. 10.
cout / cin / endl 에 대하여... #include namespace mystd { char* endl = " \n"; class ostream { public: ostream& operator 2009. 2. 10.
단항 연산자의 오버로딩 이항 연산자 오버로딩과 단항 연산자 오버로딩의 가장 큰 차이점은 전달 인자의 개수에 있다. 이항 연산자 오버로딩을한 전역함수와 멤버 함수의 매개 변수 개수는 각각 2개, 1개 였다. 단형 연산자를 오버로딩할 때, 매개 변수의 개수는 이보다 1개 적다.(피연산자가의 개수가 이항연산자 보다 1개 적다) Point& Point::operator++() { x++; y++; return *this; } 위 예제를 보면 "*this" 를 리턴하고 있다. "*this"가 의미하는 바는 무엇인가? 답: this는 객체 자신을 가리키는 포인터다. 여기에 "*연산을 하게되면 포인터가 가리키는 대상을 참조하겠다는 뜻이 된다. 즉 자기 자신을 리턴 하겠다는 의미를 지닌다. x++과 y++ 연산으로 값 증가로 충분한거 아닌가.. 2009. 2. 9.
연산자 오버로딩 연산자를 오버로딩하는 방법은 크게 두가지의 형태로 나뉜다. 첫번째는 멤버 함수에 의한 오버로딩이고, 두번째는 전역 함수에 의한 오버로딩이다. p+3 == p.operator+(3) p+3 으로 하면 p.operator(3)으로 해석이된다...약속이다 ..ㅠ. 멤버 함수에 의한 연산자 오버로딩에 해당된다. ① 멤버 함수로 오버로딩 Point Point::operator+(const Point& p)const ② 전역 함수로 오버로딩 Pointoperator+(const Point& p1,const Point& p2) =>약속......;;;;;;; p1 + p2 -> 멤버함수로 오버로딩된경우 [ p1.operator+ (p2) ] p1 + p2 -> 전역 함수로 오버로딩 된경우 [ operator+ (p1.. 2009. 2. 6.