본문 바로가기

전체150

배열의 인덱스 연산자 오버로딩 이번에 오버로딩 할것은 배열의 요소에 접근할 때 사용되는 [] 연산자이다. 이는 다른 연산자들과 달리 피연산자가 연산자 안으로 들어가게 된다.(예: arr[10]). arr[i] = > arr.operator[](i) 객체를 저장할 수 있는 배열 클래스를 정의 할 수 도 있 다! ++++++ 대입 연산자의 오버로딩 ++++++ A a =b ; --> A a(b) => 복사 생성자 +_+ A a; A b; a=b; -> a(b) ==> 이런건 존재하지 않는다 -_- 복사생성자는 객체 생성시에 하는것이 복사생성자이다 대입연산이 이루어진게 같기는 하나 전혀 다른 의미이다! a.operator=(b) => 요러코롬 해석이 됨...ㅋㅋ 오버로딩된 대입 연산자를 제공하지 않으면, 디폴트 대입 연산자가 제공된다. 이.. 2009. 2. 10.
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.