온라인 교육 부문 2년 연속 1위
신규회원 10% 할인권 증정! 신규회원 10% 할인!
TOP
강의목록

강의소개

홈 > 강의소개

C++ 프로그래밍

교수 사진

한준탁 교수

한양대학교 대학원 전자계산학과 석사과정
동국대학교 대학원 컴퓨터공학과 박사졸업

학력

한양대학교 대학원 전자계산학과 석사과정
동국대학교 대학원 컴퓨터공학과 박사졸업

강의경력

서울교육대학교
세종대학교
현) 유니와이즈 전임교수

강좌 소개
🤖 **유니와이즈 AI 튜터 탑재!**
- AI강의요약, AI질문채팅, AI문제생성 가능
- 강의는 기본, 최신 트렌드 학습은 AI 튜터로 24시간 학습!

✅ **모던 C++ 완성 로드맵**:
- C++ 기초→객체지향→STL/템플릿→C++11/14/17/20까지 한 번에 이어지는 실습 중심 커리큘럼으로, 이론과 실전을 균형 있게 익힙니다.
✅ **대학 교과과정 중심 커리큘럼**:
- 프로그래밍 기초, 자료구조·알고리즘, 소프트웨어 공학, 시스템 프로그래밍과 자연스럽게 연계되도록 설계하여 전공 수업과 동시 시너지를 제공합니다.
✅ **실전 프로젝트 & 코딩 테스트**:
- CMake·단위테스트·디버깅·프로파일링을 익히고, 팀 프로젝트와 코딩 테스트 전략으로 포트폴리오와 취업 준비를 동시에 완성합니다.
✅ **크로스플랫폼·도구 친화적**:
- Visual Studio/GCC/Clang, Windows·Linux·macOS 환경을 모두 지원해 현장에서 바로 쓰이는 개발 역량을 구축합니다.
교육 대상
🎓 **대학 전공/부전공자**: 컴퓨터공학·소프트웨어·AI·데이터사이언스, 전자/전기/정보통신, 로봇/제어, 기계·산업공학 등에서 C++ 역량을 체계적으로 강화하고 싶은 학생.
📚 **전공 수업 보강 학습자**: 프로그래밍 입문, 객체지향, 자료구조, 시스템 프로그래밍 등 전공 과목 성적 향상과 선수 과목 복습이 필요한 학습자.
🏃 **취업/이직·코딩테스트 준비생**: C++로 백준/프로그래머스/LeetCode 대비, 실무 프로젝트 경험과 포트폴리오를 빠르게 구축하려는 지원자.
🔬 **연구/프로젝트 수행자**: 임베디드·게임·HPC·네트워크 등 C++ 기반 연구/졸업작품/인턴십을 준비하는 학부·대학원생 및 실무 초입 개발자.
교재정보 및 참고문헌
📘 **주교재 (PDF 제공)**:
- 유니와이즈 자체 교수진 연구교재로, 대학 교과과정과 모던 C++을 반영한 개념 요약·예제·실습 과제·체크리스트를 포함합니다.
- 수강 시 PDF와 예제 코드 리포지토리를 제공하여 예습/복습과 프로젝트 수행을 효율화합니다.
📖 **참고 문헌 (선택)**:
- 『뇌를 자극하는 C++ 프로그래밍』(이현창 저, 한빛미디어)
- 『C++ 에스프레소』(천인국 저, 인피니티북스)
- 주교재만으로 수강 가능하나, 참고서 병행 시 심화 개념과 다양한 예제를 추가로 확보할 수 있습니다.

유니와이즈 AI학습의 특징

AI가 이끄는 스마트한 학습 경험, AI 튜터와 함께 더 빠르고, 더 깊게 학습하세요.

📝
AI 자동 요약

긴 강의 내용을 AI가 핵심만 요약하여 복습 시간을 단축시킵니다.

🔑
핵심 키워드 추출

강의에서 가장 중요한 키워드와 개념을 자동으로 추출해 제공합니다.

💡
AI 자동 퀴즈

학습한 내용을 바탕으로 AI가 생성한 퀴즈를 풀며 이해도를 점검합니다.

🤖
1:1 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 문법, 인스턴스화와 타입 추론, 다중 타입 매개변수, 특수화(specialization), 일반 함수 오버로딩과 우선순위, 명시적 템플릿 인자 사용(min, 평균 템플릿 사례 포함)

• 클래스 템플릿 설계와 활용: 단일·다중 타입 매개변수 클래스 템플릿(Box, Box2), 객체 생성 시 타입 지정, 클래스 외부 멤버 정의 시 template 헤더·클래스이름 규칙, 이종 타입 컨테이너 설계 및 STL 스타일 템플릿 클래스 이해
[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·map 정의 및 인덱스 오류 방지 원리
교수 사진

한준탁 교수님

C++ 프로그래밍

  • 130,000원
  • 강의 수 36강
  • 수강기간 90일
유니와이즈 고객행복센터 1899-7454
학점은행제 고객행복센터 02-2149-0803~4
상담시간: 10:00~18:00
점심시간: 13:00~14:00
토요일,일요일,공휴일 휴무
유니와이즈 고객행복센터
1899-7454
학점은행제 고객행복센터
1833-6227
상담시간: 10:00~18:00
점심시간: 13:00~14:00
토,일,공휴일 휴무