2013-02-07 6 views
0
class Point { 
public: 
    Point(int x, int y) : { x = new int(x); y = new int(y) } 
    ... 
    ... 
    Point& operator=(const Point& other) { 
     if(this!=&other){ 
      delete x; 
      delete y; 
      x = new int(*other.x); 
      y = new int(*other.y); 
     } 
     return *this; 
    } 
private: 
    const int* x; 
    const int* y; 
} 

이 연산자의 구현은 x와 y가 이미 초기화 되었더라도 작동합니까? const 포인터를 삭제하면 다시 할당 할 수 있습니까?const 포인터 멤버 및 연산자 =

+2

왜 처음부터 포인터를 잡고 있습니까? – juanchopanza

+0

내 코스의 이전 시험 중 하나의 질문 – TheNotMe

+5

그것은 const 포인터가 아니며 const에 대한 포인터입니다. –

답변

5

이것은 const 포인터가 아니고 const에 대한 포인터입니다. 그래서 포인터를 수정할 수 있습니다. 포인터가 가리킬 수는 없습니다.

const 포인터

int* const x; 

이며 코드는 컴파일하지 않을 것입니다.

+0

오오 감사합니다. 내 혼란을 가져 미안해! – TheNotMe