"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++에서 참조 또는 포인터로 전달해야 하는 경우: 기본 원칙

C++에서 참조 또는 포인터로 전달해야 하는 경우: 기본 원칙

2024년 11월 15일에 게시됨
검색:740

When to Pass by Reference or Pointer in C  : A Guiding Principle?

C에서 참조 또는 포인터로 전달: 기본 원칙

C에서 참조로 전달을 사용할 시기와 포인터를 사용할 시기 이해 결정적이다. 이 연습을 통해 효율적이고 오류 없는 코드를 만들 수 있습니다.

일반 상황

  • std::string을 함수에 전달:

    • foo(std::string*) 또는 foo(std::string&)?
  • tr1::shared_ptr을 함수에 전달:

    • foo(tr1::shared_ptr* ptr ) 또는 foo(tr1::shared_ptr& ptr)?

포인터 대 참조

참조로 전달하면 모든 객체가 참조로 처리될 수 있으므로 일관성이 제공됩니다. 그러나 포인터를 전달하면 nullptrs 및 리터럴을 처리할 수 있는 유연성이 제공됩니다.

스니펫 분석

주어진 스니펫:

map> > adjacencyMap;
vector* myFriends = new vector();
myFriends->push_back(string("a"));
myFriends->push_back(string("v"));
myFriends->push_back(string("g"));
adjacencyMap["s"] = shared_ptr >(myFriends);

는 참조와 포인터 모두의 속성을 고려해야 함을 강조합니다.

  • 지도 키는 다음을 사용합니다. 참조를 통해 메모리 효율성을 보장합니다.
  • 벡터 포인터는 동적 할당을 허용하여 벡터를 용이하게 합니다. 추가.

경험의 법칙

궁극적으로 적절한 선택은 특정 요구 사항에 따라 달라집니다. 지침 원칙으로 다음을 고려하십시오:

  • 참조 사용: 효율적인 메모리 사용을 위해 그리고 참조된 객체에 대한 액세스가 보장되는 경우.
  • 사용 포인터: nullptrs를 처리할 때, 동적 메모리로 작업할 때 또는 참조 자체를 수정해야 할 때.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3