2016-06-03 2 views
0

내가보고있는 기능에서 auto 사용법이 명확하지 않습니다.자동으로 유형이 포인터라고 추론합니까?

someFunction(const unique_ptr<BSTNode<int>>& node, paramType param) {

함수의 내용이이 같은 지역 변수를 설정 : 매개 변수를 감안할 때 같이 정의

auto *localNode = node.get();

자동차의 나의 이해는 할당 된 어떤 유형을 추론이다 그것을 컴파일 할 때. 문서에서는 unique_ptr::get()이 관리하는 개체에 대한 포인터를 반환한다고 나와 있습니다. 사실, 변수 선언에 *을 추가해야하는 이유는 무엇입니까?

답변

3

왜 변수 선언에 *을 추가해야합니까?

아니야. 이점은 판독기가 매우 명확하여 localNode이 포인터임을 나타냅니다.

+0

그러나 자동으로 ** 유형에 추가 * 결과를 추가하는 것보다 자동으로 해당 유형을 추론하면? –

+0

@ user5797668 아니요, '자동'은 '초기화 프로그램의 유형'을 의미하지 않습니다. 그것은 "모든 것이 형식을 이니셜 라이저의 유형과 일치시키는 데 필요한 모든 유형"을 대략 의미합니다. –

3

*을 사용하여 포인터를 추론하는 것은 불필요하지만 바람직 할 수 있습니다. 이니셜 라이저가 더 이상 포인터를 반환하지 않도록 나중에 코드가 변경되면 *은 자동 빼기가 실패하게됩니다. 이 변수를 사용하는 코드가 포인터를 염두에두고 설계된 것이라면 좋은 방법 일 수 있습니다.

관련 문제