[질문]연산자 재정의에 대하여...
글쓴이: dufmadlek / 작성시간: 금, 2005/07/08 - 3:16오후
class CMemory { public: int operator[] ( int iIndex ); }; int CMemory::operator[] (int iIndex ) { int iResult = 0; // ... return iResult; } int main( int argc, char** argv ) { CMemory mm; printf("%d\n", mm[1] ); // (1) CMemory* pMm = new CMemory; printf("%d\n", pMm[1] ); // (2) return 0; }
(1)번은 잘 되는데요. (2)번처럼 호출하는 방법이 있나요?
pMm->operator[](1) 이렇게 말구요.[/code]
Forums:
연산자가의 주체가 객체인데 해당 객체에 연산자가 있으면 그 연산자가 실행
연산자가의 주체가 객체인데 해당 객체에 연산자가 있으면 그 연산자가 실행되는데 연산자의 주체가 포인터라면 기본적인 포인터에 대한 연산이 우선시 되는 모양이군요..
아래같이 하면 되긴 됩니다..
(*pMm)[1]
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
^^
그렇군요...
감사합니다. ^^
[quote="chadr"]연산자가의 주체가 객체인데 해당 객체에 연산자
정확히 말하면 피연산자가 클래스형이냐 포인터형이냐는 별로 관계가 없습니다.
단순히 연산자의 우선순위 문제입니다. subscription([])이 dereference(*)보다
우선순위가 높기 때문입니다.
댓글 달기