가능한 중복 :
Should I pass a shared_ptr by reference?
Passing smart pointers as arguments함수에 std :: shared_ptr <Resource>을 전달하는 방법은 무엇입니까?
내가 값 또는 상수 참조하여 통과해야 하는가? 값으로 또는 지속적인 참조에 의해 복사 가능한 객체를 전달할 것인지에 대한 많은 경험을 읽었습니다. 예를 들면 :
- 통과 일정한 기준에 의해 목적 및 (함수 객체 제외) 값 유형에 내장 (동적 메모리를 포함하는) 객체의 크기가 더블 미만 2 *의 크기가 아닌 값에 의해
- 패스 .
이 규칙이 std::shared_ptr<Resource>
에 어떻게 적용되는지 설명해 주시겠습니까? 나는 그 물체가 아마도 매우 작고, 아마도 포인터와 참조 카운터 일지 모르지만 그것은 여전히 대상이라는 것을 이해한다. 가장 좋은 방법은 무엇입니까?
Ahh, 예, 죄송합니다, 저의 경우 –
내 규칙은 : 참조 의미를 원할 때 참조로 전달하고 값 의미를 원할 때 값으로 전달하십시오. 나는 그들이 당신이 읽었던 사람들보다 우월하다고 생각합니다. (그들은 암기하기도 더 쉽습니다 : P) –
@RMartinhoFernandes : 어떻게 const 참조가 그걸 나타낼까요? 필자가 종종 읽는 엄지 손가락 규칙은 본질적으로 값의 의미에 관심이있는 경우에 const 참조를 전달하는 것이고 (객체를 변경하지 않고 객체를 쿼리하는 것을 의미 함) 참조 시맨틱이 아니라는 점을 제안합니다 (여기서 객체를 수정할 수있는 기능을 원합니다). 또는) 그냥 동역학을 말하고 있었습니까? "참조를 원할 때 참조로 전달하고 값을 원할 때 값으로 전달"? – Managu