java - C++返回对象的指针或者引用有什么区别?
阿神
阿神 2017-04-18 10:10:12
0
3
545
阿神
阿神

闭关修行中......

모든 응답(3)
Peter_Zhu

C++의 참조는 실제로 제한된 포인터일 뿐이지만 제한된 포인터에는 포인터가 수행할 수 있는 일부 작업(재할당, 복사, ++, --)을 수행하는 데 사용할 수 없는 의미론적 제한이 있습니다. 기타) 보안을 강화하기 위해 null이 허용되지 않도록 제한합니다. 이는 포인터에 대한 컴파일러의 보호 모드로 이해할 수 있습니다.

그러면 언제 참조를 사용해야 하고 언제 포인터를 사용해야 할까요? 몇 가지 포인트가 있다고 생각합니다.

  1. 인용 먼저

    포인터 대신 참조를 사용할 수 있는 경우 참조를 사용하세요.

  2. 포인터는 null이 허용되지만 참조는 null이 될 수 없습니다.

    으아아아

    물론 이 경우에도 참조를 계속 사용할 수 있으며, 빈 객체의 경우 예외를 던져서 표현할 수 있습니다.

    으아아아
  3. 공정한 사용 의미는 포인터가 소유(가지고)를 암시하고 참조는 연관(사용)을 암시합니다.

    car에는 wheel

    이 있습니다. 으아아아

    trip car:

    사용 으아아아

    물론, 연관된 _car가 여행 기간 동안 변수여야 하는 경우에는 포인터만 사용할 수 있습니다(참조를 재할당할 수 없기 때문).

    으아아아

    그렇지 않으면 참조 사용을 고집하고 _car의 포인터를 변경하려는 경우 새로운 여행을 재구성할 수만 있습니다.

  4. 참조는 컨테이너에 저장할 수 없으며 포인터만 사용할 수 있습니다. (주로 참조가 재할당 및 복사 작업이 제한되기 때문인 것 같습니다.)

    으아아아
  5. 마지막으로 언제든지 참조를 포인터로 변환할 수 있습니다.

    으아아아

    그러나 상황에 주의해야 합니다. 여기서 car는 유지 관리 방법에 의해서만 사용됩니다(참조는 사용 관계를 암시합니다). 비록 포인터 연산이 우아하지는 않지만 여전히 허용 가능하지만 비용을 지불해야 합니다. 사용할 포인터를 저장하는 데 주의하세요:

    으아아아

    maintain 메소드를 종료한 후에는 _last_car가 가리키는 객체가 해제될 가능성이 높습니다.

伊谢尔伦

Const는 얘기하면 무저갱입니다
예를 들어주세요

으아아아
巴扎黑

포인터에는 NULL 반환이 허용되지만 참조에는 허용되지 않습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!