C의 참조 또는 포인터 전달: 기본 원칙
C에서 참조 전달을 사용할 때와 포인터를 사용할 때 이해 결정적이다. 이렇게 하면 효율적이고 오류 없는 코드를 얻을 수 있습니다.
일반 상황
-
std::string을 함수에 전달:
- foo(std::string*) 또는 foo(std::string&)?
-
tr1::shared_ptr을 함수에 전달:
- foo(tr1::shared_ptr* ptr ) 또는 foo(tr1::shared_ptr& ptr)?
포인터 대 참조
참조로 전달하면 모든 객체가 참조로 처리될 수 있으므로 일관성이 제공됩니다. 그러나 포인터를 전달하면 nullptrs 및 리터럴을 처리할 수 있는 유연성이 제공됩니다.
스니펫 분석
주어진 스니펫:
1 2 3 4 5 6 | map<string, shared_ptr<vector<string>> > adjacencyMap;
vector<string>* myFriends = new vector<string>();
myFriends->push_back(string( "a" ));
myFriends->push_back(string( "v" ));
myFriends->push_back(string( "g" ));
adjacencyMap[ "s" ] = shared_ptr<vector<string> >(myFriends);
|
로그인 후 복사
은 필요성을 강조합니다. 참조와 두 가지 속성을 모두 고려합니다. 포인터:
- 맵 키는 참조를 사용하여 메모리 효율성을 보장합니다.
- 벡터 포인터는 동적 할당을 허용하여 벡터 추가를 용이하게 합니다.
Rule of Thumb
결국 적절한 선택은 구체적인 상황에 따라 다릅니다. 요구 사항. 지침 원칙으로 다음을 고려하십시오.
-
참조 사용: 효율적인 메모리 사용을 위해 그리고 참조된 객체에 대한 액세스가 보장되는 경우.
-
사용 포인터: nullptrs를 처리할 때, 동적 메모리로 작업할 때 또는 참조를 수정해야 할 때
위 내용은 C에서 참조 또는 포인터로 전달해야 하는 경우: 지도 원칙?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!