포인터와 참조 중 무엇을 사용할까요
선택 가능성 및 소유권 의미에 따라 포인터와 참조 중 하나를 선택합니다.
포인터와 참조 중 무엇을 사용할까요은(는) CoddyKit의 무료 C++ Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C++ Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
작업에 맞는 서로 다른 도구
참조와 포인터는 모두 다른 객체를 간접적으로 가리킬 수 있지만 의미는 서로 다릅니다. 각 도구가 가장 적합한 곳에 사용하십시오.
필수 대상에는 참조
참조는 널일 수 없고 다른 대상을 참조하도록 다시 연결할 수도 없습니다. 함수에 실제 객체가 항상 필요하다면 참조 매개변수를 사용하십시오.
void render(const Image& img); // must have an image선택적 대상에는 포인터
포인터는 널일 수 있습니다. 인수가 실제로 선택적인 경우 포인터를 사용하십시오.
void render(const Image* img); // nullptr means "skip"재할당할 때는 포인터
포인터는 다른 객체로 바꿔 가리킬 수 있습니다. 이동하는 커서나 현재 노드처럼 알고리즘을 실행하는 동안 간접 참조 대상이 바뀌는 경우 포인터를 사용하십시오.
Node* current = head;
while (current) {
process(current);
current = current->next;
}참조를 담는 컨테이너에는 참조를 사용할 수 있을까요?
std::vector<T&>는 사용할 수 없습니다. std::vector<std::reference_wrapper<T>>를 사용하거나 대신 포인터를 저장하십시오.
참조 반환
결과가 호출보다 오래 유지되고 호출자가 직접 사용할 수 있는 경우(멤버, 컨테이너 요소)에는 참조를 반환하십시오.
std::string& Person::name() { return name_; }포인터 반환
함수가 “결과 없음”을 반환할 수 있거나 소유권이 명확하지 않은 경우에는 포인터를 반환하십시오. 현대 코드에서는 std::optional이나 스마트 포인터를 선호하십시오.
클래스 멤버
멤버로 참조를 저장하면 객체의 수명 동안 참조 대상이 고정되며 복사 대입이 금지됩니다. 포인터 멤버는 더 유연하지만 널 검사가 필요합니다.
다형성
포인터와 참조 모두 다형성에 사용할 수 있습니다. 컨테이너에는 기본 클래스 포인터를 저장하십시오(벡터는 참조를 담을 수 없음). 널이 유효하지 않은 매개변수에는 참조를 사용하십시오.
원시 소유 포인터보다 스마트 포인터
원시 포인터는 소유하지 않는 간접 참조에만 사용하십시오. 소유권은 std::unique_ptr 또는 std::shared_ptr에 맡기십시오.
선택 요약표
빠른 안내:
- 항상 유효한 객체 → 참조
- 없을 수 있음 → 포인터 또는
std::optional - 이동하는 간접 참조 → 포인터
- 메모리 소유 → 스마트 포인터
- 컨테이너 안에 저장 → 포인터(참조 벡터는 다루기 까다로움)
빠른 확인
널이 아닌 객체를 필요로 하는 함수에 가장 적합한 매개변수 형식은 무엇입니까?
복습
필수이며 고정된 대상에는 참조를 사용하고, 선택적이거나 이동하는 대상에는 포인터를 사용하십시오. 소유권이 필요하다면 스마트 포인터를 선호하십시오. 컨테이너에는 보통 참조가 아니라 포인터가 필요합니다.
AI 튜터와 함께 C++을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 51
- 레슨
- 203
자주 묻는 질문
“포인터와 참조 중 무엇을 사용할까요” 강의는 무료인가요?
네 — “포인터와 참조 중 무엇을 사용할까요” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C++ Academy 강의 전체를 잠금 해제할 수 있습니다. C++ Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“포인터와 참조 중 무엇을 사용할까요”에서 뭘 배우나요?
선택 가능성 및 소유권 의미에 따라 포인터와 참조 중 하나를 선택합니다. 브라우저에서 직접 실행하는 실습 코드로 C++ Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
C++ Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 C++ Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“포인터와 참조 중 무엇을 사용할까요” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 C++ Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 C++ Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 원시 포인터와 주소 연산자
- 역참조와 포인터 산술
- nullptr와 널 포인터 안전성
- 포인터와 참조 중 무엇을 사용할까요