자바 의 final 과 C + + 의 const

1513 단어
이 글 을 쓰 는 이 유 는 C + + 에서 const 와 자바 에서 final 과 유사 한 상황 이 있 습 니 다. 자바 를 처음 배 우 는 사람들 은 이런 곤 혹 스 러 움 이 있 을 것 입 니 다. final 이 기본 유형 에 작용 할 때 변 하지 않 지만 대상 인용 에 작용 할 때 이 인용 이 다른 대상 을 가리 키 지 않도록 확보 할 수 밖 에 없습니다. 물론 의미 적 으로 는 문제 가 없습니다.자바 에서 가 변 적 이지 않 은 대상 을 만 드 는 것 은 복잡 한 과정 (String 류 의 실현 참조) 입 니 다. 그리고 C + + 에서 가 변 적 이지 않 은 대상 을 만 드 는 것 은 매우 쉽 습 니 다. 가 변 적 이지 않 은 대상 은 여러 가지 장점 (안전 등) 이 있 습 니 다.다음은 이 두 키워드 의 공통점 과 차이 점 을 이야기 하 겠 습 니 다.
const 대상 을 가리 키 는 포인터 와 참조
//  const     
const Test t(10);
const Test *p = &t;
p->a = 12// error   Test   a  
//const    
const int &p = 1;
p = 2;//error

const 대상 을 가리 키 는 지침 과 인용 은 이 지침 이나 인용 수정 대상 을 통과 할 수 없 음 을 확보 합 니 다.
const 형식의 포인터
int a = 1;
int b = 2;
int *const p1 = &1;
int *p2 = &b;
p1 = p2 //error
*p1 = 3;//ok

const 대상 을 가리 키 는 const 포인터
const int i = 3;
const int * const p = &i;

const 대상 을 가리 키 는 const 지침 은 지침 을 바 꾸 어 대상 을 수정 하고 지침 을 바 꾸 지 못 하도록 보장 할 수 있 습 니 다.
자바 의 final 참조
 final Test a = new Test(3);
 a.a = 4;

자바 의 final 인용 은 C + + 의 const 포인터 효과 와 같 음 을 알 수 있 습 니 다.
총결산
이상 의 분석 을 통 해 우 리 는 자바 가 C + + 에 비해 한 장면 이 적 다 는 것 을 알 수 있다. 예 를 들 어 특정한 대상 이 실제 적 으로 가 변 적 인 것 이다. 우 리 는 다른 사용자 가 그 에 게 변 화 를 주 는 것 을 제한 해 야 한다. c + + 에 서 는 const 지침 이나 const 인용 을 전달 할 수 있 고 자바 에 서 는 기 존의 메커니즘 이 존재 하지 않 기 때문에 우 리 는 인용 을 통 해 가 변 대상 을 수정 할 수 없 도록 확보 해 야 한다.(오랫동안 c + + 를 보지 못 했 습 니 다. 질문 이 있 으 면 지적 해 주세요)

좋은 웹페이지 즐겨찾기