Skip to content

Commit 8467216

Browse files
committed
Add: 02. cpp_advence 추가
1 parent 72dddf5 commit 8467216

8 files changed

Lines changed: 1436 additions & 0 deletions
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title:
3+
date: 2026-01-07 22:17:43 +09:00
4+
categories: [면접준비, 02.cpp_advence]
5+
published: false
6+
tags:
7+
[면접준비]
8+
---
9+
10+
# 🧠 C++ 복사 생성자 호출 타이밍 면접 질문 리스트
11+
12+
## ✅ 기본 개념
13+
14+
1. 복사 생성자란 무엇인가요?
15+
16+
- 복사 생성자란 같은 타입의 변수를 인자로 받는 생성자입니다. 복사 생성자를 별도로 만들지 않는다면 컴파일러가 기본 복사 생성자를 생성해냅니다.
17+
18+
2. 복사 생성자와 복사 대입 연산자의 차이는 무엇인가요?
19+
20+
- 복사 생성자는 새로 만드는 변수에 사용되는 함수이고, 복사 대입 연산자는 이미 사용중인 변수에 대입하는 연산자입니다.
21+
22+
## ✅ 컨테이너 / 문맥별 동작
23+
24+
1. STL 컨테이너에 객체를 push할 때 복사 생성자는 언제 호출되나요?
25+
26+
- size가 capacity보다 작다고 가정했을 때, 가장 마지막 위치에 push하려는 객체로 복사 생성자가 호출됩니다.
27+
28+
2. 컨테이너 재할당(reallocation) 시 복사 생성자는 언제 호출되나요?
29+
30+
- 컨테이너가 재할당되면서 이동 생성자가 없는 타입의 경우에 모든 요소에 대해 복사 생성자가 호출됩니다.
31+
32+
## ✅ 최적화 / 예외 상황
33+
34+
1. RVO(Return Value Optimization)란 무엇인가요?
35+
36+
- 임시객체 최적화입니다. 임시 객체를 반환하기 위해 복사 생성자가 호출되어야 하지만, 반환하는 자리에 객체를 생성하는 것으로 복사 생성자의 호출을 줄입니다.
37+
38+
2. RVO가 적용되면 복사 생성자는 호출되나요?
39+
40+
- 호출되지 않습니다.
41+
42+
## ✅ const / 참조 연계
43+
44+
1. const 객체를 복사할 때도 복사 생성자가 호출되나요?
45+
46+
- 호출됩니다.
47+
48+
2. 참조로 객체를 전달하면 복사 생성자가 호출되나요?
49+
50+
- 호출되지 않습니다.
51+
52+
## ✅ 설계 / 판단
53+
54+
1. 복사 생성자 호출이 잦으면 어떤 문제가 생기나요?
55+
56+
- 깊은 복사가 존재한다면 메모리 할당이 자꾸 발생하는 문제가 생깁니다.
57+
58+
2. 복사 생성자 호출을 줄이기 위한 방법에는 무엇이 있나요?
59+
60+
- 이동 생성자와 이동 대입 연산자를 선언하여 이동을 사용하는 방법이 있습니다.
61+
62+
---
63+
64+
## GPT 피드백
65+
66+
1. 복사 생성자의 정의가 약했음. 기존 객체를 이용해 새 객체를 만드는 생성자.
67+
68+
<details>
69+
<summary>GPT 1줄 답변</summary>
70+
<div markdown="1">
71+
72+
## ?? 1줄 모범 답변
73+
74+
1. 기존 객체를 사용해 새 객체를 생성할 때 호출되는 생성자입니다.
75+
2. 복사 생성자는 새 객체 생성 시, 복사 대입 연산자는 기존 객체에 대입할 때 호출됩니다.
76+
77+
3. 컨테이너 내부에 새 요소를 복사해 저장할 때 호출됩니다.
78+
4. 기존 요소들을 새 메모리로 옮길 때 호출됩니다.
79+
80+
5. 반환 객체 생성을 최적화해 복사를 생략하는 컴파일러 최적화입니다.
81+
6. 아니요, RVO가 적용되면 복사 생성자는 호출되지 않습니다.
82+
83+
7. 네, const 여부와 무관하게 복사 생성자는 호출됩니다.
84+
8. 아니요, 참조 전달은 객체를 새로 생성하지 않습니다.
85+
86+
9. 불필요한 메모리 복사로 성능 저하가 발생합니다.
87+
10. 참조 전달, 이동语 지원, RVO 활용이 있습니다.
88+
89+
</div>
90+
</details>
91+

0 commit comments

Comments
 (0)