홈 > 강의소개
C++ 프로그래밍
한준탁 교수
한양대학교 대학원 전자계산학과 석사과정
동국대학교 대학원 컴퓨터공학과 박사졸업
한양대학교 대학원 전자계산학과 석사과정
동국대학교 대학원 컴퓨터공학과 박사졸업
서울교육대학교
세종대학교
현) 유니와이즈 전임교수
AI가 이끄는 스마트한 학습 경험, AI 튜터와 함께 더 빠르고, 더 깊게 학습하세요.
긴 강의 내용을 AI가 핵심만 요약하여 복습 시간을 단축시킵니다.
강의에서 가장 중요한 키워드와 개념을 자동으로 추출해 제공합니다.
학습한 내용을 바탕으로 AI가 생성한 퀴즈를 풀며 이해도를 점검합니다.
모르는 부분을 24시간 언제든 AI 튜터에게 질문하고 답변을 받습니다.
총 4개 챕터, 36강으로 구성되어 있습니다.
| 제목 | 강의시간 | 상세내용 |
|---|---|---|
| 1장. C++를 배우기 위한 준비 | ||
|
[1강] C++란?
|
0:
52:
12
|
|
|
C++ 기초 개념과 C와의 비교 및 Visual C++ 사용법 정리
• C++ 언어 개념 및 특징: C 기반 객체지향 언어로 캡슐화·상속·다형성 및 성능 중심 특성을 이해하고 운영체제·게임·그래픽·임베디드 등 응용 분야를 파악한다. • C와 C++ 문법 비교 및 기본 입출력: 파일 확장자, main 함수 공통점, 세미콜론 규칙, 변수 선언 위치 차이, printf/scanf vs cout/cin, iostream 헤더와 namespace std 사용법을 정리한다. • Visual C++ 개발 환경 구조: 프로젝트·워크스페이스 개념, 소스–오브젝트–실행 파일 빌드 과정, 콘솔 프로젝트 생성·편집·빌드·실행 절차와 기본 예제 코드 구조를 학습한다. |
||
| 2장. C++ 사용하기 | ||
|
[2강] 변수
|
0:
35:
17
|
|
|
C++ 변수와 키워드, 사용 규칙 핵심 정리
• C++ 정보 표현과 변수 개념: 모든 정보의 숫자 표현·변수의 정의·초기화·대입 규칙·대입 연산자(=) 의미 정리 • 변수 이름 규칙과 키워드: 식별자 작성 규칙(사용 가능 문자·첫 글자 제한·대소문자 구분·키워드/예약어 금지)과 좋은 변수 이름 짓기 원칙 정리 • 변수 정의 위치와 기본 예제: C와 C++의 변수 선언 위치 차이, 사용 직전 선언 관례, 성적표·출력 예제 코드 구조를 통한 변수·cout 활용 패턴 정리 |
||
|
[3강] 타입(정보의 종류)
|
1:
03:
39
|
|
|
C++ 기본 타입과 정수·실수·문자·bool 핵심 정리
• C++ 산술 타입 구조: 정수·실수·문자·bool과 signed/unsigned, sizeof, 플랫폼별(16/32/64비트) 크기·범위 체계 정리 • 정수·실수 표현 체계: 정수 타입 선택 기준과 10·8·16진 리터럴, float/double/long double, f 접미사와 지수표현, 부동소수점 가수·지수 구조 및 정밀도 개념 • 문자·bool 및 코드 규칙: char·unsigned char·wchar_t와 ASCII·escape 시퀀스, bool의 true/false와 0/1 관계, 선언·초기화·리터럴·연산(지수표기 오용 등)에서의 대표 오류 수정 원칙 |
||
|
[4강] 형변환
|
0:
38:
41
|
|
|
C++ 형변환(Casting) 핵심 정리와 응용예제 해설
• 형변환 개념과 종류: 암시적 형변환과 명시적 형변환의 정의, 발생 조건, 타입 크기·부호·정수/실수 여부에 따른 데이터 손실·오버플로 구조 정리 • 기본 타입 변환 규칙: int·short·unsigned·char·bool·float·double 등 기본 타입의 크기와 표현 범위, 정수↔실수·정수↔문자·정수↔bool 변환 시 절단·ASCII 해석·0/비0 규칙 및 오동작 사례 정리 • 실습·응용 예제: 같은 값의 타입별 해석, 기본 타입 분류, 정수·실수 연산 코드 작성, unsigned에 음수 저장·short 범위 초과 시 오버플로 결과 분석과 시험 출제 포인트 정리 |
||
|
[5강] 기본적인 연산자. 비트단위 연산자
|
0:
37:
37
|
|
|
C++ 기본 연산자와 비트 단위 연산 핵심 정리
• C++ 기본·대입·관계·논리 연산자: 산술(+, -, *, /, %), 대입(=, 연쇄 대입), 관계(>, >=, <, 관계/논리 > 대입) 구조 정리 • 조건 결합과 bool 처리: 관계 연산과 논리 연산 결합 평가 순서(관계 → 논리 → 대입), bool 타입 및 boolalpha 출력 형식, 복합 조건식에서 괄호 사용 원칙 정리 • 비트 단위 및 시프트 연산: 비트 논리 연산(&, |, ~, ^, XOR 진리와 활용)과 비트 단위 예제 해석, 시프트 연산자(<<, >>)의 비트 이동 규칙과 2의 거듭제곱 배/나눗셈 효과 및 unsigned 정수에서의 채움/버림 규칙 정리 |
||
|
[6강] 연산자 더 잘 알기
|
0:
45:
08
|
|
|
C++ 연산자 심화: 시프트, 증감, 형변환, 비트 논리 응용
• 비트 시프트·비트셋·비트 마스크: 부호 있는/없는 정수의 산술·논리 시프트 규칙, bitset을 이용한 2진수 표현, AND·OR·SHIFT 조합을 활용한 비트 마스크와 색상 비트 필드 처리 • 연산자 축약형·증가/감소 연산자: 복합 대입 연산자(+=, -=, <<=, >>=)의 의미와 사용법, 전위/후위 증가·감소 연산자의 평가 순서와 대입식 등가 변환 규칙 • 형변환·논리 연산·XOR 교환: 연산 중 형변환 우선순위와 정수형 승진, 관계·논리 연산자를 사용한 조건식 구성, XOR 기반 임시 변수 없는 값 교환 알고리즘 구조 |
||
|
[7강] 분기
|
0:
32:
44
|
|
|
Summary Content:
C++ 분기문 핵심: if, switch, 삼항 연산자, goto 정리 • C++ 조건 분기 기초: if/else/else if 구조, 조건식 true/false에 따른 단일 경로 실행, 비교/논리 연산자 사용 시 대입 연산자와의 혼동 및 세미콜론 오용, 들여쓰기·중괄호에 따른 블록 구조 이해 • switch/case와 조건 연산자: switch/case의 변수-상수 제약, break와 default 동작, case 결합과 fall-through 특성, 삼항 연산자 `조건 ? 식1 : 식2` 구조와 if/else 간 상호 변환 및 단순 선택 로직에의 활용 • 분기 방식 비교와 오류 교정: 조건 분기(if, switch)와 무조건 분기(goto)의 차이, 레이블·콜론 문법과 스파게티 코드 문제, 비교식 오류·switch break 누락·if/else·switch·삼항 연산자 변환을 다루는 응용 예제 기반 분기문 사용 능력 점검 |
||
|
[8강] 반복
|
0:
46:
06
|
|
|
C++ 반복문 while, do while, for 핵심 정리와 응용예제 해설
• 반복(iteration)과 반복 제어 구조: while·do while·for 문의 기본 개념, 조건 검사 시점 차이, 초기화·조건·증감 위치에 따른 실행 흐름 구조 정리 • 반복문 제어와 문법 특징: while·do while·for의 기본 형식, C++ for문의 초기화부 변수 선언, 요소 생략과 무한 루프, break·continue를 통한 조기 종료·부분 건너뛰기 제어 방식 • 반복문 응용 패턴: 합계·역순 합·입력 처리·구구단·팩토리얼 계산, 중첩 for문의 2차원 반복과 총 반복 횟수 계산, for↔while 변환 및 출력 추적을 통한 실행 결과 분석 |
||
|
[9강] 배열의 기본
|
0:
30:
08
|
|
|
C++ 배열(Array) 기본 개념과 선언, 초기화, 크기 계산 정리
• 배열 기본 개념과 구조: 동일 타입 데이터를 연속 메모리 공간에 저장하고 0부터 시작하는 인덱스로 접근하는 선형 자료 구조 정의 및 선언 형식 정리 • 배열 연산과 제약: 인덱스를 이용한 원소 접근·탐색·반복문 처리 방법과 선언 시 초기화 규칙, 배열 간 통째 대입 불가, 미초기화 시 쓰레기값 주의 사항 정리 • 배열 크기와 sizeof 계산: 원소 크기×개수에 따른 전체 크기 개념과 sizeof(배열)/sizeof(배열[0])를 이용한 배열 바이트 크기 및 원소 개수 계산 방식 정리 |
||
|
[10강] 배열에서의 문자열 사용
|
0:
35:
35
|
|
|
배열에서의 문자열 사용과 문자열 상수, 배열 응용 예제 정리
• C/C++ 문자열 개념: 널 문자('\0')로 끝나는 char 배열 구조, 문자열 상수의 자동 널 문자 포함, 문자 배열과 문자열의 차이 및 sizeof 기반 길이·메모리(byte) 계산 • 배열 사용 규칙: 인덱스 범위(0~n-1), 원소 타입별 크기×원소 수로 전체 크기 산출, 선언 시 초기화/부분 초기화 규칙과 미초기화 시 쓰레기값, 초기화 리스트 사용 가능 위치와 잘못된 재대입 오류 • 배열 응용 패턴: 점수 배열 합계·평균 계산 알고리즘, 배열 인덱스 검증, 문자열 역순 출력 로직(sizeof-1 제외), 월별 일수 배열을 이용한 1~12월 일수 출력 구조 정리 |
||
|
[11강] 구조체의 기본
|
0:
24:
48
|
|
|
C++ 구조체 기본 개념과 정의, 초기화 및 대입 정리
• 구조체 기본 개념과 타입 특성: 서로 다른 타입 데이터를 하나로 묶는 사용자 정의 타입으로 배열과의 차이, 타입 정의와 변수 정의의 구분, 무명 구조체의 제약 정리 • 구조체 구성과 사용 방법: struct를 이용한 구조체 정의, 멤버 변수와 닷 연산자(.)를 통한 멤버 접근, 구조체 정의와 동시에 변수 정의 및 멤버 출력 시 명시적 접근 규칙 정리 • 구조체 초기화와 대입 규칙: 선언과 동시에 중괄호 초기화 허용, 미초기화 시 쓰레기 값 발생, 구조체 변수 간 통째 대입 가능성과 배열과의 대입 불가 대비 정리 |
||
|
[12강] 포인터의 기본. 포인터와 const
|
1:
09:
12
|
|
|
C++ 포인터와 const 핵심 개념 정리 요약
• 포인터 기본 개념과 타입 규칙: 주소를 저장하는 포인터 변수 정의, &와 * 연산 의미, 메모리·주소 구조와 타입 일치 규칙, void* 포인터의 범용성·형 변환 필요성, 32비트 환경 포인터 크기 특성 정리 • 포인터 사용 절차와 안전성: 포인터 선언·초기화(NULL/0), 역참조를 통한 값 접근·변경, 포인터 주소·값·자신의 주소 구분, NULL 검사 패턴과 초기화되지 않은 포인터 사용 시 오류 위험 관리 • const 키워드와 포인터 조합: 일반 변수·배열 크기에 대한 const 적용 의미, const T* / T* const / const T* const 구분, 포인터가 가리키는 값과 포인터 자신 중 어느 쪽이 불변인지에 따른 허용·제한 연산 및 대표 오류 유형 정리 |
||
|
[13강] 포인터와 배열
|
0:
46:
11
|
|
|
C++ 포인터와 배열 관계 핵심 정리 (포인터 연산, 배열 이름, 포인터 배열)
• 포인터와 배열 기본 개념: 배열 원소 주소를 저장하는 포인터, 포인터 덧셈·뺄셈의 단위가 “자료형 크기”임, 배열 이름이 첫 번째 원소 주소인 상수 포인터처럼 동작함 • 포인터 연산과 배열 탐색 구조: 포인터 증가/감소로 배열 순회, *(p+i) ≡ p[i] ≡ *(array+i) ≡ array[i] 동치, 같은 배열 내 포인터 간 뺄셈이 인덱스 차이를 반환함 • 배열 관련 포인터 선언 구분: 배열 전체를 가리키는 포인터 `타입 (*p)[N]`와 포인터의 배열 `타입 *p[N]` 구분, 각 선언에 따른 인덱싱 방식과 메모리 참조 구조 이해 |
||
|
[14강] 배열과 구조체
|
0:
36:
47
|
|
|
배열과 구조체, 포인터와 구조체의 결합 핵심 정리
• 배열을 멤버로 갖는 구조체·구조체 배열: 구조체 내부 배열과 구조체 배열 선언·초기화·멤버 접근(변수.멤버, 배열인덱스.멤버) 및 대량 데이터 관리 구조 정리 • 구조체 포인터와 포인터 멤버: 구조체를 가리키는 포인터, (*p).멤버와 p->멤버 연산자, 구조체 내부 포인터 멤버에 주소 저장 및 역참조를 통한 간접 접근 개념 정리 • 자기참조 구조체·연결 리스트·포인터 배열: 자기 자신을 가리키는 구조체 포인터로 연결 리스트·순환 구조 형성, 구조체 배열과 구조체 포인터 배열의 메모리 배치 및 참조 관계 이해 |
||
|
[15강] 복합타입의 모든것 (1)
|
0:
42:
27
|
|
|
C++ 복합타입: 공용체, 열거체, typedef 핵심 정리
• 공용체(Union) 메모리 구조: 모든 멤버가 동일한 시작 주소와 메모리 공간을 공유하며, 공용체 크기는 가장 큰 멤버의 크기와 같아 리틀 엔디언 환경에서 바이트 단위 값 공유·변경 분석에 활용됨 • 열거체(Enumeration) 값 규칙과 형변환: 관련 상수 집합을 하나의 타입으로 정의하고 심볼은 기본적으로 0부터 순차 증가하며, 중간 값 지정 시 이후 심볼이 해당 값 기준으로 증가하고, 열거체→정수는 암시적 형변환·정수→열거체는 명시적 형변환을 통해 제한적 산술 연산을 허용함 • typedef(type definition) 별명 정의: 기존 타입에 새로운 이름(별명)을 부여해 긴 선언·복잡한 포인터·배열 타입을 단순 표현하고, 의미 있는 타입 이름(ID_TYPE 등)으로 가독성을 높이며, 추후 typedef 한 줄 수정으로 전체 코드의 타입 변경에 일괄 대응함 |
||
|
[16강] 복합타입의 모든 것 (2)
|
0:
51:
47
|
|
|
C++ 복합타입 심화: 레퍼런스, 비트필드, 다차원 배열, 이중 포인터
• 레퍼런스와 const 레퍼런스: 변수 별명 개념, 초기화·대입 차이, 참조 대상 불변, const 결합 시 상수·타입 변환 초기화 규칙 정리 • 구조체 비트 필드와 메모리 정렬: 비트 단위 멤버 크기 지정, 이름 없는 비트 필드로 여유 비트 삽입, 구조체 포함과 패딩·경계선 정렬에 따른 메모리 구조 이해 • 다차원 배열과 이중 포인터: 2차원 배열의 행·열 인덱스와 연속 메모리 구조, 문자열 2차원 배열 선언 규칙 및 메모리 계산, 포인터를 가리키는 포인터(이중 포인터)의 참조 단계 해석 및 활용 |
||
|
[17강] 함수의 기본. 인자의 전달 (1)
|
0:
51:
18
|
|
|
C++ 함수의 개념과 인자 전달, 원형과 반환값 정리
• 함수 개념과 구조화 프로그래밍: 블랙박스 함수 개념, 코드 재사용·가독성·유지보수성 향상, main()을 중심으로 한 함수 호출 구조 정리 • 함수 정의·원형·반환값 규칙: 함수 정의와 호출 관계, 함수 원형의 역할과 타입 일치 조건, void와 단일 반환값 원리, 지역 변수 스코프와 생명주기 정리 • 인자와 매개변수, 전달 메커니즘: 인자(argument)·매개변수(parameter)의 구분, 실매개변수·형식매개변수 개념, 값 복사 기반 인자 전달과 메모리 구조, 자주 발생하는 문법·타입 오류 정리 |
||
|
[18강] 인자의 전달 (2)
|
1:
05:
44
|
|
|
C++ 인자의 전달: 포인터·레퍼런스·배열·구조체 정리
• 포인터·레퍼런스 인자 전달: 주소 기반 call by reference 메커니즘으로 값 복사 없이 원본 변수·구조체를 직접 수정하거나 const를 통해 읽기 전용으로 전달하는 방법 정리 • 배열·2차원 배열 인자 전달: 배열 이름을 통한 포인터식 전달, 매개변수 선언 규칙(1차원 크기 생략·2차원 열 크기 필수)과 const 배열을 이용한 원본 데이터 보호 방식 정리 • 구조체·CRT 함수 활용: 구조체의 값 전달 대비 레퍼런스·const 레퍼런스 사용 시 성능·안전성 이점과 sqrt, pow 등 CRT 수학 함수를 활용한 거리 계산 절차 정리 |
||
|
[19강] 함수의 모든 것
|
0:
57:
25
|
|
|
C++ 함수 오버로딩·디폴트 인자·재귀호출 핵심 정리
• 함수 오버로딩: 동일 이름의 함수에 대해 매개변수 시그니처(타입·개수·순서)를 다르게 정의하고, 반환형만 다른 오버로딩·레퍼런스로 인한 혼동·오버로드 해석 우선순위(Exact Match→Promotion→Standard Conversion→User-defined Conversion)를 통해 적절한 버전을 선택하는 규칙 정리 • 디폴트 인자: 함수 원형에서만 인자 기본값을 오른쪽부터 연속해서 지정하며, 중간·왼쪽 디폴트 금지, 디폴트 인자를 가진 함수와의 오버로딩에서 호출 모호성(ambiguous call)을 피하도록 시그니처를 설계하는 규칙 정리 • 재귀호출: 함수가 자기 자신을 호출하는 구조와 기저 조건(종료 조건) 설계 원리, 호출 전·후 처리에 따른 수행 순서 차이, 카운트다운·진법 변환·합(sum)·팩토리얼(factorial) 등 전형적 재귀 패턴의 구조적 형태 정리 |
||
|
[20강] 동적 메모리 할당
|
1:
05:
47
|
|
|
C++ 동적 메모리 할당 핵심 정리( new/delete, 응용 및 규칙 )
• 메모리 할당 방식 비교: 정적 메모리(컴파일 시 크기·수명 고정)와 동적 메모리(실행 중 크기 결정, 수명·해제 시점 개발자 제어) 구조 및 장단점 정리 • C++ 동적 메모리 연산자: new/delete와 new[]/delete[]를 이용한 단일 객체·배열 할당/해제 절차, 포인터를 통한 접근 방식, 할당→사용→해제 3단계 사용 패턴 정리 • 동적 메모리 안전 규칙 및 예제: 짝 맞는 해제(new↔delete, new[]↔delete[]), NULL 포인터 해제 안전성, 이중 해제 및 누수 방지, 문자열 역순 복사 등 응용 예제의 메모리 흐름 분석 |
||
|
[21강] 문자열 사용의 기본
|
1:
01:
12
|
|
|
C 스타일 문자열 기본 함수와 문자열 메모리 구조 정리
• C 스타일 문자열과 메모리 구조: char 배열/char*와 NULL 문자('\0') 기반 문자열 표현, 문자열 리터럴의 읽기 전용 저장, 배열 이름·char*의 문자열 시작 주소 포인터 의미 정리 • 주요 문자열 함수 동작: strlen 길이 계산(+'\0' 제외), strcpy/strncpy 복사와 const char* 의미, strcat 연결과 버퍼 크기 조건, strcmp 사전식 비교와 반환값 규칙 정리 • 실수·오류 포인트: '\0' 미저장 시 쓰레기 값, 문자열 리터럴을 목적지로 한 strcpy/strcat 사용 오류, B/'B'/"B" 구분, 배열 선언 vs 포인터 선언 차이 및 안전한 버퍼 크기 설계 정리 |
||
|
[22강] 문자열의 사용
|
0:
54:
41
|
|
|
C++ 문자열(string 클래스) 기본과 C 스타일과의 조화로운 사용 정리
• C++ string 클래스와 C 스타일 문자열 비교: char 배열+널 문자 기반 C 문자열과 객체 기반 string 클래스의 메모리 관리, 연산자/멤버 함수 중심 조작, 안전성·편의성 차이 정리 • 문자열 조작과 상호 변환: string의 생성·복사·size·결합(+·+=)·비교(==·!=)·검색(find·offset)·부분 추출(substr) 기능과 C 스타일(strlen, strcpy, strcat, strcmp), C→C++(암시적 형변환), C++→C(c_str, 동적 메모리+strcpy) 변환 절차 정리 • 문자열 입력과 안전성: cin>>의 버퍼 오버플로우·공백 분리 한계와 getline(cin, string)·cin.getline(char[], size)의 사용 구조, 공백 포함 안전 입력 및 최대 길이 제어 방식 정리 |
||
|
[23강] 헤더파일과 구현파일
|
0:
38:
44
|
|
|
C++ 헤더 파일과 구현 파일 사용과 문자열 입출력 정리
• C 스타일 vs C++ 스타일 문자열: char 배열/포인터 기반 C 문자열과 string 클래스 기반 C++ 문자열의 비교·길이 측정·복사·결합·입력 방식 차이 정리, >> 입력의 한계와 cin.getline·getline(cin, string) 사용 구조 정리 • 헤더 파일과 구현 파일 구조: .cpp 구현 파일에 함수 정의, .h 헤더 파일에 함수 원형·구조체·클래스 선언을 두고 #include로 인터페이스를 공유하는 다중 파일 프로그램 분할 원리와 다른 구현 파일 함수 사용 절차 정리 • 표준 라이브러리 헤더 vs 사용자 정의 헤더: #include <...> 형식의 표준 라이브러리 헤더와 #include "..." 형식의 사용자 정의 헤더의 의미, 검색 경로 차이, 여러 cpp·헤더 파일을 조합한 함수 호출 관계 설계 규칙 정리 |
||
| 3장. C++ 객체지향 프로그래밍 | ||
|
[24강] 객체지향 프로그래밍
|
0:
48:
48
|
|
|
객체지향 프로그래밍 핵심 개념: 클래스와 객체 구조, 절차지향과의 차이, 부품 조립 비유를 통한 독립성·인터페이스·재사용성 이해
정보 은닉·캡슐화·추상화: 내부 구현을 숨기고 인터페이스만 노출하는 구조, 결합도 감소와 보안성 향상 메커니즘, 캡슐을 통한 정보 은닉 실현 상속과 다형성: 부모-자식 클래스 계층을 통한 코드 재사용과 확장, 공통 인터페이스 기반의 동일 호출·다양한 실행(Polymorphism) 구조 정리 |
||
|
[25강] 클래스와 객체 (1)
|
0:
50:
26
|
|
|
C++ 클래스와 객체, 멤버 함수와 생성자 핵심 정리
• 클래스와 객체 구조·멤버 접근: 클래스와 구조체 문법 비교, 멤버 변수·멤버 함수와 접근제어자, 객체 생성·멤버 접근·복사와 대입 연산 차이 정리 • 멤버 함수와 이름 충돌: 멤버 함수 호출 규칙, 클래스 내부/외부 정의와 범위 지정 연산자(::), 함수 내부 이름 충돌과 지역 변수·멤버 변수 우선순위 정리 • 생성자와 소멸자: 생성자·소멸자의 개념과 문법(클래스명 동일·반환 타입 없음·public), 디폴트·매개변수 생성자, 오버로딩·디폴트 매개변수·생성자 간 호출을 통한 객체 초기화 방식 정리 |
||
|
[26강] 클래스와 객체 (2)
|
1:
07:
27
|
|
|
C++ 클래스 소멸자와 접근 제어, 정적 멤버 정리
• 소멸자와 자원 관리: `~ClassName()` 형태의 반환형·매개변수·오버로딩 불가 멤버로, 객체 소멸 시 자동 호출되어 동적 메모리 등 자원 해제 담당 • 접근 제어와 캡슐화: private/protected/public 접근 지정자를 통해 멤버 접근 범위를 제어하고, getter/setter(접근자·설정자)로 private 멤버에 대한 간접 접근을 제공하여 캡슐화 구현 • 정적 멤버와 클래스 단위 상태: static 멤버 변수·함수는 모든 객체가 공유하는 클래스 소유 자원으로, 객체 수 카운트 등 공통 상태 표현에 사용되며, 정적 멤버 함수는 정적 멤버에만 접근 가능함 |
||
|
[27강] 클래스와 객체 (3)
|
1:
08:
37
|
|
|
클래스 헤더/구현 분리, 인라인·const 함수, 동적 객체 생성 정리
• 클래스 모듈 분리 구조: 헤더(.h)에 클래스 선언·멤버 원형·인라인 함수, 구현(.cpp)에 멤버 정의·static 정의를 분리해 가독성·응집도·재사용성을 높이는 구조 정리 • 인라인·const 멤버 함수: 짧은 함수를 헤더에 인라인으로 정의해 호출 오버헤드를 줄이고, const 멤버 함수/객체 규칙으로 멤버 변경을 제한해 인터페이스 안전성과 타입 일관성을 확보하는 방법 정리 • 객체 생성과 보조 개념: 객체 배열에서의 생성자 호출, new/delete 기반 동적 객체 생성 시 생성자·소멸자 호출 시점, 클래스 내부 enum·typedef 활용, this 포인터의 자기 객체 참조 의미를 통한 객체 수명·자기참조 관리 구조 정리 |
||
|
[28강] 상속 (1)
|
1:
12:
14
|
|
|
C++ 상속(Inheritance) 개념과 생성자·소멸자, 접근 지정자 정리
• 상속 핵심 개념 및 구조: 부모/자식 클래스 관계, 단방향 상속, 공통 기능의 상위 클래스 집약과 하위 클래스 확장, UML 표기와 상속 계층 구조를 통한 코드 중복 제거 • 상속과 접근 지정자: public/private/protected 의미, 상속 시 자식이 사용할 수 있는 멤버 범위(public·protected), 외부 접근 가능 범위, protected의 역할과 예제(Employee–Manager, Bike–MountainBike)를 통한 접근 오류 규칙 정리 • 상속과 생성자·소멸자: 생성자 비상속 원칙, 부모 생성자 자동 호출 규칙(디폴트·매개변수 생성자, 초기화 리스트), 부모/자식 생성자·소멸자 호출 순서와 OX·오류 코드 형태의 출제 포인트 정리 |
||
|
[29강] 상속 (2)
|
0:
58:
22
|
|
|
C++ 상속 재정의·접근 지정자·다중 상속 핵심 정리
• 멤버 함수 재정의(Overriding)·중복 정의(Overloading) 개념: 시그니처 동일 재정의와 매개변수 목록 차이 오버로딩의 구분, 상속 계층에서 가장 하위 자식 함수 우선 호출 및 부모 함수·변수의 범위 지정 연산자(::)를 통한 명시적 호출 원리 정리 • 상속 방식과 멤버 접근성: public/protected/private 상속에 따른 부모 public·protected·private 멤버의 접근 수준 변화, protected 멤버 접근 가능 범위, 멤버 변수 재정의의 문제점과 함수 위주의 재정의 권장, UML 기호(-·#·+)와 Student/GraduateStudent 사례를 통한 캡슐화 구조 이해 • 다중 상속(multiple inheritance) 구조와 모호성: 여러 부모 클래스로부터의 멤버 상속 구조, 동일 이름 멤버 존재 시 모호성(ambiguous) 오류와 부모클래스이름::멤버를 이용한 해결, 실제 설계 예제(Pickup·Coffee 계층)를 통한 다중 상속·생성자 호출 순서 및 신중한 활용 원칙 정리 |
||
|
[30강] 다형성과 가상 함수 (1)
|
1:
05:
08
|
|
|
C++ 다형성과 업캐스팅·다운캐스팅, 가상 함수 정리
• 다형성·형변환 구조: 업캐스팅으로 부모 포인터가 자식 객체를 공통 인터페이스로 처리하고, 다운캐스팅과 형변환 연산자로 자식 고유 멤버 접근 및 타입 안전성 고려 • 가상 함수·바인딩 메커니즘: virtual 함수 선언과 오버라이딩으로 부모 포인터 기반 동적 바인딩 구현, 정적 바인딩과 동적 바인딩의 결정 시점·성능·유연성 차이 정리 • 추상 클래스·순수 가상 함수: 순수 가상 함수로 객체 생성 불가한 추상 클래스 정의, 자식 클래스에서 오버라이딩을 통해 실제 동작 구현 및 인터페이스 역할 수행 |
||
|
[31강] 다형성과 가상 함수 (2)
|
0:
44:
20
|
|
|
C++ 다형성 심화: 참조자, 순수 가상 함수, 추상 클래스, 인터페이스
• 다형성 구현 기초: 부모 포인터·참조자와 가상 함수를 이용해 자식 객체의 오버라이딩 함수를 호출하고, 타입에 관계없이 동일 인터페이스로 다루는 구조 정리 • 순수 가상 함수와 추상 클래스: `virtual 함수명(...) = 0;` 문법, 몸체 없는 인터페이스 제공, 하나 이상 포함 시 추상 클래스가 되어 객체 생성 불가·자식 클래스의 구현 의무 및 인터페이스 역할 정리 • 추상 클래스 활용 패턴: Shape/Rectangle, Animal 계층, RemoteControl-가전제품, GameCharacter 예제를 통해 추상 클래스 포인터·참조자를 통한 다형성, 가상 함수 설계 가이드라인, 오버라이딩 시 부모 함수 은닉 및 `부모클래스이름::함수이름` 명시 호출 원리 정리 |
||
|
[32강] 예외처리
|
1:
06:
15
|
|
|
C++ 예외 처리 핵심 개념과 예제 정리(try, catch, throw, 예외 클래스)
• C++ 예외 처리 기본 구조: 예외·예외 처리 개념, 전통적 오류 처리 한계, try/throw/catch 문법과 실행 흐름, 타입 일치 규칙과 catch(...)에 의한 모든 예외 포착, 예외의 함수 간 전달과 재전달, 함수 헤더 예외 명시 방식 정리 • 다중 예외 처리 전략: 다중 catch 구성과 구체 타입 → 포괄 타입 우선순위, 문자열 예외(char*, const char*) 처리, 예외 전달/재전달을 활용한 계층적 예외 처리 구조 설계 • 사용자 정의 예외 클래스와 응용: 예외 클래스 설계와 throw/catch 패턴, 예외 정보(문제 값·메시지 등) 캡슐화, 예제 30.1~30.4를 통한 예외 명시, 문자열 예외, catch 순서 오류, 실무형 세금 계산 예외 처리 코드 분석 |
||
| 4장. C++ 고급 기능 | ||
|
[33강] 함수 템플릿. 클래스 템플릿
|
1:
01:
51
|
|
|
C++ 함수 템플릿과 클래스 템플릿 핵심 정리
• C++ 템플릿과 일반화 프로그래밍: 함수 템플릿·클래스 템플릿을 형틀로 정의하여 타입 매개변수(T, T1, T2, …) 기반 인스턴스화로 코드 재사용·유연성·성능 및 STL 구조 이해 • 함수 템플릿 구조와 변형: template • 클래스 템플릿 설계와 활용: 단일·다중 타입 매개변수 클래스 템플릿(Box, Box2), 객체 생성 시 타입 지정, 클래스 외부 멤버 정의 시 template 헤더·클래스이름 |
||
|
[34강] 입출력과 파일처리
|
1:
14:
55
|
|
|
C++ 파일 입출력과 스트림, 텍스트/이진/랜덤 파일 정리
• C++ 스트림과 파일 스트림 클래스: cin/cout 기반 스트림 추상화와 장치 독립성, istream/ostream/iostream 구조, ifstream·ofstream·fstream·string stream 계열의 역할과 파일 open/close, 오류 검사(fail, !스트림), 연산자(>>, <<) vs get/put 기반 문자 입출력, precision·setf/unsetf·진법/정렬/표기 플래그에 의한 출력 형식 제어 • 텍스트 파일과 이진 파일, 이진 입출력: 텍스트 파일의 문자(ASCII) 기반 표현과 높은 이식성 vs 이진 파일의 메모리 표현 그대로 저장과 공간·속도 효율, ios::binary 모드 사용, read/write(buffer, count)의 포인터·바이트 단위 동작, 정수·배열·구조체를 sizeof와 (char*) 캐스팅으로 한 번에 저장·복원하는 방식 및 레코드 단위 내부 배치 구조 • 순차 파일과 임의 접근(랜덤) 파일, 파일 위치 표시자: 순차 접근의 처음부터 순서대로만 읽기/쓰기 vs 임의 접근의 임의 위치 읽기/쓰기 개념과 특성, 마그네틱 테이프·디스크 매체 대비, 파일 위치 표시자(file pointer)의 의미, seekg(offset, dir)의 beg/cur/end 기준과 바이트 단위 이동 규칙, 포인터 재배치로 특정 레코드(예: 구조체 배열 요소) 직접 접근하는 응용 구조 |
||
|
[35강] STL 컨테이너 (1)
|
0:
43:
48
|
|
|
C++ STL 컨테이너 개요와 종류별 특징 정리
• STL과 제네릭 프로그래밍: 템플릿 기반 표준 라이브러리로 컨테이너·반복자·알고리즘 구성, 자료형 독립적 코드 재사용과 호환성·신뢰성·개발 효율 제공 • 컨테이너 분류와 구조: 순차 컨테이너(vector·deque·list)와 연관 컨테이너(set·multiset·map·multimap), 컨테이너 어댑터(stack·queue·priority_queue)로 구분되며, 내부 구조(동적 배열·연결 리스트·키 정렬)에 따라 삽입·삭제·탐색 성능과 메모리 사용이 달라짐 • 주요 컨테이너 특징: vector는 동적 배열로 뒤쪽 임의 접근·삽입/삭제 효율, deque는 양 끝 삽입/삭제 최적화, list는 연결 리스트로 중간 삽입/삭제 효율·임의 접근 불가, set/multiset은 정렬 집합·중복 여부, map/multimap은 키-값 쌍·키 중복 여부, stack/queue/priority_queue는 LIFO·FIFO·우선순위 기반 입출력 제약 제공 |
||
|
[36강] STL 컨테이너 (2)
|
0:
31:
22
|
|
|
STL 컨테이너 심화: set·multiset·map·stack·queue·priority_queue
• 연관 컨테이너 개념: set·multiset의 중복 허용 여부와 키 기반 집합 구조, map의 키-값 쌍 구조와 find·인덱스 연산 및 문자열·형식 정의 활용 • 컨테이너 어댑터 구조: stack의 LIFO, queue의 FIFO, priority_queue의 힙 기반 우선순위 처리 방식과 push·pop·top/front·empty 인터페이스 동작 • 벡터·집합·맵 응용: vector의 생성·push_back·pop_back·size·인덱스 범위(0~size-1)와 평균 계산 함수(getAverage), set |
||
한준탁 교수님
C++ 프로그래밍