C++ 면접 필수 질문 24가지와 전문가 답변 (2021년 업데이트)
1) C++에서 클래스(Class)란 무엇인가?
클래스는 데이터 멤버와 멤버 함수를 하나의 단위로 묶는 사용자 정의 데이터 타입입니다. 동일한 구조를 가진 객체(인스턴스)를 생성하기 위한 청사진(blueprint) 역할을 합니다.
2) C++에서 클래스를 선언하는 방법은?
class ClassName {
// 데이터 멤버
// 멤버 함수
};
선언은 세미콜론으로 끝납니다. 중괄호 안에는 클래스의 인터페이스와 구현 세부사항을 정의합니다.
3) C++ 프로그램에서 int main()의 역할은?
main() 함수는 C++ 애플리케이션의 진입점(entry point)입니다. 컴파일러는 소스 파일을 객체 코드로 변환(컴파일)한 후, 이를 실행 파일로 결합(링킹)합니다. 실행은 int main()에서 시작하여 반환값을 만나면 종료됩니다.
4) C++ 객체(Object)란 무엇인가?
객체는 클래스의 인스턴스입니다. 클래스의 데이터 멤버를 포함하며 멤버 함수를 호출할 수 있습니다. 예:
class Student {
public:
int rollno;
std::string name;
};
Student A, B; // A와 B는 Student 타입의 객체
5) 클래스 멤버의 특징은?
- 데이터 멤버와 멤버 함수는 클래스에 속합니다.
- 클래스 정의 내에서 선언되어야 합니다.
- 동일 클래스 내에서 멤버를 재선언할 수 없습니다.
- 클래스 본문 외부에서 멤버를 추가할 수 없습니다.
6) 멤버 함수(Member Function)란?
멤버 함수는 클래스의 동작을 정의합니다. 클래스의 데이터 멤버를 조작하고 객체와 상호작용하기 위한 인터페이스를 제공합니다.
7) 조건식에 사용되는 기본 변수 타입은?
bool – true/false 값
char – 단일 문자
int – 정수
float / double – 부동소수점 수
8) namespace std;의 기능은?
std 네임스페이스는 표준 C++ 라이브러리의 모든 구성 요소(클래스, 함수, 객체)를 포함합니다. using namespace std;를 사용하면 std:: 접두사 없이 이 구성 요소들을 참조할 수 있습니다.
9) 루프(Loop)란 무엇이며 C++에는 어떤 종류가 있나?
루프는 조건이 충족될 때까지 코드 블록을 반복 실행합니다. C++은 세 가지 기본 루프 구조를 지원합니다:
while – 조건이 참인 동안 실행
for – 지정된 횟수만큼 반복
do‑while – 최소 한 번 실행 후 조건이 참인 동안 반복
10) C++에서 함수는 어떻게 분류되나?
- 반환 타입
- 이름
- 매개변수 (타입과 개수)
- 함수 본문 (구현)
11) 접근 지정자(Access Specifier)와 그 종류는?
- private – 클래스 내부에서만 접근 가능
- public – 클래스를 볼 수 있는 모든 코드에서 접근 가능
- protected – 클래스 내부와 파생 클래스에서 접근 가능
12) 연산자(Operator)란? 예시와 함께 설명
연산자는 피연산자에 대해 연산을 수행합니다. 대입, 산술, 논리 등 다양한 타입이 있습니다. 예시 – 산술 덧셈:
#include <iostream>
using namespace std;
int main() {
int a = 21;
int b = 10;
int c = a + b;
cout << "Value of c: " << c << endl;
return 0;
}
프로그램 출력: Value of c: 31.
13) C 스타일 문자열(Character String)이란?
널 문자 \0로 끝나는 1차원 문자 배열입니다. 예시:
#include <iostream>
using namespace std;
int main() {
char greeting[6] = {'H','e','l','l','o','\0'};
cout << "Greeting message: " << greeting << endl;
return 0;
}
출력: Greeting message: Hello.
14) 참조 변수(Reference Variable)란?
참조는 기존 변수의 별칭(alias)으로, 앰퍼샌드(&) 연산자로 선언합니다. 선언 시 초기화해야 하며 재지정할 수 없습니다.
15) C++에서 다형성(Polymorphism) 설명
다형성은 객체의 타입에 따라 동일한 연산이 다르게 동작하도록 허용합니다. 함수 오버로딩, 연산자 오버로딩, 동적 바인딩을 위한 가상 함수 등을 가능하게 합니다.
예시:
- 정수 덧셈:
5 + 5
- 문자열 연결:
"Medical" + "Internship"
- 부동소수점 덧셈:
3.14 + 2.27
16) 데이터 추상화(Data Abstraction)란?
데이터 추상화는 사용자에게 필수적인 세부사항만 노출하고 구현 세부사항은 숨깁니다. 예를 들어 cout은 출력 장치에 어떻게 접근하는지 드러내지 않고 텍스트를 출력합니다.
17) C++에서 예외 처리(Exception Handling)란?
try – 예외가 발생할 수 있는 코드를 감쌉니다.
catch – 특정 예외 타입을 처리합니다.
throw – 예외를 발생시킵니다.
18) 데이터 캡슐화(Data Encapsulation)란?
캡슐화는 데이터와 연산을 하나의 단위(클래스)로 묶고 데이터 멤버에 대한 직접 접근을 제한하여 모듈성과 유지보수성을 높입니다.
19) 멤버 함수의 종류는?
- 단순 (non‑static, non‑const)
- Static – 인스턴스가 아닌 클래스에 속함
- Const – 객체를 수정하지 않음
- Inline – 컴파일러에게 인라이닝을 제안
- Friend – 멤버는 아니지만 private/protected 멤버에 접근 가능
20) 의사결정 문(Decision‑Making Statement)이란? if 예시
if 문
switch 문
- 조건부(삼항) 연산자
예시:
#include <iostream>
using namespace std;
int main() {
int x = 10, y = 5;
if (x > y) {
cout << "x is greater than y" << endl;
}
return 0;
}
21) 멀티스레딩(Multithreading)이란?
멀티스레딩은 단일 프로세스 내에서 여러 스레드를 동시 실행할 수 있게 합니다. 종류:
- 프로세스 기반 – 별도 프로세스가 시스템 자원 공유
- 스레드 기반 – 여러 스레드가 동일한 프로세스 메모리 공간 공유
22) 업캐스팅(Upcasting)이란?
업캐스팅은 파생 클래스 포인터나 참조를 기본 클래스 타입으로 변환하여 다형적 동작을 가능하게 합니다.
23) 전처리기(Preprocessor)란?
전처리기 지시어(#include, #define 등)는 실제 컴파일 전에 컴파일러에게 텍스트 치환을 지시합니다.
24) 복사 생성자(Copy Constructor)란? 그 목적은?
복사 생성자는 동일 클래스의 기존 객체를 복사하여 새 객체를 생성합니다. 객체 초기화, 값에 의한 함수 인수 전달, 반환값 시 호출됩니다.
무료 PDF 다운로드: C++ 면접 질문 & 답변