c++포인터 와 인용의 차이 점 소개 및 사용 설명

포인터 와 인용 은 완전히 다 르 게 보이 지만,같은 기능 을 하 는 것 같다.지침 과 인용 은 모두 다른 대상 을 간접 적 으로 인용 하 게 하 는 것 이다.당신 은 언제 지침 을 사용 할 것 인지,언제 인용 을 사용 할 것 인 지 를 어떻게 결정 합 니까?우선 어떤 경우 에 도 빈 값 을 가리 키 는 인용 을 사용 할 수 없다 는 것 을 인식 해 야 한다.하나의 인용 은 항상 어떤 대상 을 가리 켜 야 한다.따라서 변 수 를 사용 하여 대상 을 가리 키 게 한다 면 이 변 수 는 어떤 때 에 도 대상 을 가리 키 지 않 을 수 있 습 니 다.이 때 변 수 를 포인터 로 표시 해 야 합 니 다.빈 값 을 이 변수 에 부여 할 수 있 기 때 문 입 니 다.반대로 변수 가 대상 을 가리 키 고 있 습 니 다.예 를 들 어 디자인 이 변수 가 비어 있 는 것 을 허용 하지 않 는 다 면 변 수 를 참조 로 설명 할 수 있 습 니 다."하지만 잠시 만 요."라 고 의 심 스 럽 게 물 었 다."이런 코드 는 어떤 결 과 를 가 져 올 까요?"
 
char *pc = 0; //
char& rc = *pc; //
이것 은 매우 유해 하 다.의심의 여지 가 없다.결 과 는 불확실 할 것 이다.그들 이 잘못 을 고 치 는 것 에 동의 하지 않 는 한 이런 코드 를 쓴 사람 을 피해 야 한다.이러한 코드 가 소프트웨어 에 나타 날 까 봐 걱정 된다 면 인용 을 완전히 피 하 는 것 이 좋 습 니 다.그렇지 않 으 면 더 우수한 프로그래머 에 게 시 키 는 것 이 좋 습 니 다.우 리 는 앞으로 빈 값 을 가리 키 는 인용 가능성 을 무시 할 것 이다.인용 은 반드시 대상 을 가리 키 기 때문에 C++에서 인용 은 초기 화 되 어야 합 니 다.
 
string& rs; // ,
string s("xyzzy");
string& rs = s; // ,rs s
지침 에는 이런 제한 이 없다.4567913)빈 값 을 가리 키 는 인용 이 존재 하지 않 는 다 는 사실은 인용 코드 를 사용 하 는 효율 이 지침 을 사용 하 는 것 보다 높다 는 것 을 의미한다.인용 을 사용 하기 전에 합 법성 을 테스트 할 필요 가 없 기 때문이다.4567913)반대로 지침 은 항상 테스트 되 어 비어 있 지 않도록 해 야 한다.
 
string *ps; //
//
지침 과 인 용 된 또 다른 중요 한 차이 점 은 지침 이 다른 대상 을 가리 키 는 값 을 다시 부여 할 수 있다 는 것 이다.그러나 인용 은 항상 초기 화 할 때 지 정 된 대상 을 가리 키 며 이후 에는 바 꿀 수 없습니다.
 
void printDouble(const double& rd)
{
cout << rd; // rd, double
}
전체적으로 말 하면 다음 과 같은 상황 에서 지침 을 사용 해 야 한다.하 나 는 그 어떠한 대상 도 가리 키 지 않 을 가능성 을 고려 하 는 것 이다(이런 상황 에서 지침 을 비 울 수 있다).다른 하 나 는 서로 다른 시간 에 서로 다른 대상 을 가리 킬 수 있어 야 한 다 는 것 이다(이런 상황 에서 지침 의 방향 을 바 꿀 수 있다).항상 한 대상 을 가리 키 고 한 대상 을 가리 키 면 가리 키 는 방향 이 바 뀌 지 않 는 다 면 인용 을 사용 해 야 한다.또 하나의 상황 은 조작 부 호 를 다시 불 러 올 때 인용 을 사용 해 야 한 다 는 것 이다.가장 일반적인 예 는 조작 부호[]이다.이 조작 부전 형의 용법 은 목표 대상 을 되 돌려 주 는 것 으로 값 을 부여 할 수 있 습 니 다.
 
void printDouble(const double *pd)
{
if (pd) // NULL
{
cout << *pd;
}
}
연산 자[]가 지침 을 되 돌려 주면 다음 문 구 는 이렇게 써 야 한다.
 
string s1("Nancy");
string s2("Clancy");
string& rs = s1; // rs s1
string *ps = &s1; // ps s1
rs = s2; // rs s1, s1 "Clancy"
ps = &s2; // ps s2;
// s1
그러나 이렇게 하면 v 가 벡터 지침 처럼 보일 수 있다.따라서 인용 부 호 를 되 돌려 주 는 것 을 선택 할 것 이다.대상 을 가리 키 고 지향 을 바 꾸 고 싶 지 않다 는 것 을 알 았 을 때,조작 부 호 를 다시 불 러 오고 불필요 한 의미 오 해 를 막 기 위해 지침 을 사용 해 서 는 안 된다.이 를 제외 한 다른 경우 에는 지침 을 사용 해 야 한다.

좋은 웹페이지 즐겨찾기