We may earn an affiliate commission when you visit our partners.
Course image
Pope Kim

본 비디오 강좌는 포큐아카데미에서 진행하는C++은 C와 더불어 가장 널리 사용되는 언매니지드 언어일 뿐만 아니라 2018년 7월 기준 전세계에서 3번째로 많이 쓰이는 언어입니다. (출처: TIOBE) 그리고 언매니지드 언어라는 특수성 때문에 한동안 사용률이 떨어지지 않을 전망입니다.

Read more

본 비디오 강좌는 포큐아카데미에서 진행하는C++은 C와 더불어 가장 널리 사용되는 언매니지드 언어일 뿐만 아니라 2018년 7월 기준 전세계에서 3번째로 많이 쓰이는 언어입니다. (출처: TIOBE) 그리고 언매니지드 언어라는 특수성 때문에 한동안 사용률이 떨어지지 않을 전망입니다.

현존하는 프로그래밍 언어를 크게 둘로 나누면 매니지드(Managed) 언어와 언매니지드(Unmanaged) 언어가 있습니다. 이 둘의 차이는 프로그래머가 컴퓨터 하드웨어를 직접 제어할 수 있는지 여부입니다. (예: 프로그래머가 직접 메모리를 관리하는가?)

프로그램의 성능보다 제품을 빨리 개발하는 것이 중요한 분야에서는 C#, Java와 같은 매니지드 언어를 널리 사용합니다. 하지만 운영체제, 비디오 게임, 가상현실, 주식거래소, 머신 러닝 코어, 블록체인 등 성능이 더 중요한 분야에서는 여전히 언매니지드 언어를 사용할 수밖에 없습니다. 따라서 본 강좌는 실제 업계에서 쓰이는 C++ 프로그래밍 기법에 중점을 맞춰 진행합니다.

언매니지드 언어의 장점은 여기서 그치지 않습니다. 프로그래머의 지속적인 성장에 반드시 필요한 지식 중 하나가 컴퓨터 하드웨어에 대한 이해입니다. 탑 레이서라면 자동차의 동작 원리를 잘 알아야 하듯이 탑 프로그래머는 하드웨어의 동작 원리를 잘 이해해야 합니다. 이걸 돕는 언어가 바로 언매니지드 언어입니다.

'COMP2500: Java 개체지향 프로그래밍 및 설계'와 마찬가지로 이 강좌에서도 개체지향 프로그래밍(OOP)에 대해 배웁니다. 하지만 이 코스를 성공적으로 마무리한 분들은 하드웨어 수준에서 개체지향 프로그래밍이 어떻게 작동하는지까지 자세히 이해하실 수 있을 겁니다.

본 강좌는 다음과 같이 크게 세 부분으로 나뉘며, 강의 진행도 이 순서를 따릅니다.

  1. 코어 C++: 참조, 클래스, 상속 등 C++의 기본이 되는 내용. C++98 표준 ( ~ 5주 차)

  2. 모던 C++: STL 등 C++03 표준에서 추가된 기능 중 업계에서 쓰이는 내용들 (6주 차 ~ 9주 차)

  3. C++1x: C++11/14/17 표준에서 추가된 최신 기능 중 업계에서 쓰이는 내용들 (10주 차 ~ )

위와 같이 강의를 세 부분으로 나눈 이유는 회사에 따라 사용하는 C++ 표준이 다르고, 성능 상의 이유로 일부러 과거의 표준을 여전히 사용하는 곳도 많기 때문입니다. 따라서 최신의 C++ 표준만을 사용하는 프로그래머는 업계에서 원하는 프로그래머가 아닌 경우가 많습니다.

Enroll now

What's inside

Syllabus

코스 소개
누가 이 코스를 들을 수 있나요?
POCU 수강생만을 위한 정보
수업 일정
Read more
코스에서 사용하는 슬라이드 구조
C++에 대한 소문과 사실
정리
수업에 도움되는 자료
참고자료 안내
동영상 강좌 관련 질문 안내
출력(Output)

목차

Hello World 출력하기

  • “Hello World”

  • std::cout, std::endl

네임스페이스(namespace)

  • namespace

  • namespace 예제

  • using 지시문

  • using 예제

코드보기: using / namespace
복습 퀴즈

목차

<< 연산자(operator)

  • << 연산자

코드보기: 모든걸 출력해 보자!

목표

출력형식 지정(Output Formatting)

  • 16진수 출력 - printf()

  • 16진수 출력 – 조정자(Manipulator)

  • 조정자 (1/5)

  • 조정자 (2/5)

  • 조정자 (3/5)

  • 조정자 (4/5)

  • #include <iomanip> 안에 있는 조정자

코드보기: 조정자

목표

출력형식 지정(Output Formatting)

  • cout 멤버 메서드 (1/2)

  • cout 멤버 메서드 (2/2)

  • setf(), unsetf()

입력(Input)

목차

입력 스트림(Input Stream)

  • 키보드에서 읽기 

  • 정수형 읽기

  • 부동 소수점형 읽기

  • 왜 scanf()는 위험한가?

  • 그렇다면 이제 cin을 살펴보자...

  • C에서는 이렇게 했었죠?

  • C++에서 쓸 수 있는 더 안전한 방법 - setw()

  • 이 변수들에 어떤 값들이 들어 있을까?

  • cin도 마찬가지

목차

스트림 상태(Stream States)

  • 스트림 상태

  • 예제

목차

입력 버리기(Discarding Input)

  • 입력 버리기 (1/2)

  • 입력 버리기 (2/2)

목차

입력 버리기(Discarding Input)

  • get()

  • getline()

코드보기: 정수의 합 구하기, getline()
일부 새로운 C++ 기능

목차

  • 초기 C++의 새로운 기능들 

  • C++의 새로운 기능들

Bool 데이터형

  • bool 데이터형

목차

참조(Reference)

  • 참조

  • 값에 의한 호출 (C/Java/C#)

  • 참조에 의한 호출 (C)

  • Java는 어떨까?

  • 값에 의한 호출은 모든 타입에 똑같이 동작 (C/C++)

  • 참조에 의한 호출도 마찬가지

목차

참조(Reference)

  • Java는 어떨까?

  • 왜...

  • 참조

  • 함수 매개변수로서의 참조

목차

참조(Reference)

  • 컴퓨터는 참조가 뭔지 알까?

코드보기: 참조

목차

코딩표준 쪼오금~

  • 코딩표준에 대해 말해 보자

  • 시도 1

  • 시도 2

  • 여전히 완벽하지 않음

  • 시도 3

  • C#은 이걸 더 잘 고쳤음

문자열(string)

목차

문자열(string)

  • 지난번에 본 코드...

  • std::string 클래스

  • 대입(Assignment)과 덧붙이기(Appending)

  • 문자열 합치기(Concatenation)

  • 비교(Relational)연산자

  • size(), length(), c_str()

  • string 속의 한 문자에 접근하기

  • 한 줄 읽기

목차

문자열(string)

  • <sstream>

  • C 헤더를 써도 될까요?

  • 그래서 string이 더 낫다는 거죠?

  • 1단계

  • 2단계

  • 3단계

  • 4단계

  • 5단계

  • 6단계

  • 7단계

  • 어우~ 뭐 이리 많아?

  • c_str() 기억나죠?

코드보기: 문자열 뒤집어 덧붙이기
파일 입출력(I/O)

목차

파일 입출력(I/O)

  • 파일 입출력 <fstream>

  • 파일 열기

  • open()

  • 파일 열기 모드의 예

  • 파일 닫기

  • 스트림 상태 확인하기

  • close(), is_open()

목차

파일 입출력(I/O)

  • 파일에서 문자 하나씩 읽기

  • get(), getline(), >>

  • 파일에서 한 줄씩 읽기

  • 어떤 결과가 나올까?

  • 빈 파일 읽기

  • 파일에서 한 단어씩 읽기

  • 사례 1 – 문자열 하나와 숫자 하나

  • 사례 2 – 숫자들만 있는 경우

목차

파일 입출력(I/O)

  • 사례 3 – 숫자들과 뉴라인(newline)

  • 사례 4 – 잘못된 입력과 숫자들

목차

파일 입출력(I/O)

  • 시도 1 – 제대로 읽은 것만 출력

  • 시도 2 – 다음 구분 문자까지 건너뛰기

  • 시도 2의 문제

  • 시도 3? 어, 이것도 안돼~

  • 숫자만 읽기 (이 코드는 된다!)

목차

파일 입출력(I/O)

  • 문제가 보이나요?

  • clear() 전에 잘못된 입력을 무시하면…

목차

파일 입출력(I/O)

  • EOF 처리는 까다롭다

  • 베스트 프랙티스(Best Practice)

  • 훌륭한 테스트 케이스

목차

파일 입출력(I/O)

  • 파일에 쓰기

  • put(), <<

  • 바이너리 파일 읽기

  • (char*)&record는 어떻게 작동할까?

  • ifstream::read()

  • 바이너리 파일에 쓰기

  • ofstream::write()

  • 파일 안에서의 탐색

  • 탐색(seek) 유형

  • 파일 쓰기 위치 읽기 및 변경

  • 기타 정보

코드보기: 파일 입출력
개체지향 프로그래밍 (Object-Oriented Programming) 1

목차

  • OOP: Java vs C++

  • OOP가 뭔지는 다 알고 있죠?

  • OOP가 뭘까?

목차

  • 하지만 누군가 OOP를 복잡하게 만들었다

  • 걔네들 방식

  • 직관적인 OOP로 돌아가서

목차

클래스(Class)

  • Vector 클래스를 만들어 보자

  • 멤버 변수의 접근권한

  • 접근 제어자(Access Modifier)

  • 보통 제어자 별로 C++ 멤버들을 그룹 지음

목차

클래스(Class)

  • 개체 생성

  • Vector a;를 살펴보자

  • Vector* b = new Vector();를 살펴보자

  • 스택

  • 스택을 다시 살펴보자

  • 힙을 다시 살펴보자

목차

클래스(Class)

  • 개체 배열(Array)

  • 개체 배열 – 메모리를 들여다보자

  • 개체 소멸

  • new를 사용한 뒤에는 꼭 delete를!

목차

클래스(Class)

  • X와 Y의 값은?

  • 기본 값

  • Java가 멤버 변수를 0으로 초기화하는 방법?

생각할 거리: new/delete와 malloc()/free()의 차이

목차

클래스(Class)

  • 생성자(Constructor)

  • 초기화 리스트(Initializer List)

  • 더 나은 Vector 클래스를 만들어 보자

코드보기: Vector 클래스의 헤더 및 cpp 파일

목차

클래스(Class)

  • 기본 생성자

  • 컴파일러가 하는 일?

  • 둘 중 컴파일 안 되는 코드는?

영상 퀴즈: 둘 중 컴파일 안 되는 코드는?
둘 중 컴파일 안 되는 코드는?

목차

클래스(Class)

  • 둘 중 컴파일 안 되는 코드는?

  • 생성자 오버로딩(Overloading)

  • 생성자 오버로딩

  • 소멸자(Destructor)

  • 클래스 안에서의 동적 메모리 할당

  • 다시 말하지만 메모리 해제를 꼭 기억하자!

  • 클래스 안에서의 동적 메모리 할당

목차

클래스(Class)

  • Vector 클래스의 멤버 함수

  • const란?

  • Const 멤버 함수

코드보기: Vector 클래스

목차

  • 구조체(Struct) vs 클래스(Class)

  • 구조체에 관한 코딩표준

개체지향 프로그래밍 2

목차

복사(Copy) 생성자

  • 복사 생성자

  • 암시적(implicit) 복사 생성자

  • 예: ClassRecord 클래스

  • 포인터는 얕은 복사

  • 사용자가 만든 복사 생성자

  • 포인터의 깊은 복사

코드보기: char 배열과 복사 생성자

목차

함수 오버로딩(overloading)

  • 메서드 오버로딩

  • 함수 오버로딩

영상 퀴즈

목차

함수 오버로딩(overloading)

  • 함수 오버로딩

  • 함수 오버로딩 매칭하기

목차

함수 오버로딩(overloading)

  • 함수 오버로딩 매칭하기

  • 함수 매칭 순서

  • 더 자세히 알고 싶다면…

코드보기: 함수 오버로딩과 Vector 클래스

목차

연산자(operator) 오버로딩

  • 연산자

  • 연산자의 종류 – 단항(unary) 연산자

  • 연산자의 종류 – 이항(binary) 연산자

  • 연산자의 종류 – 기타

  • 연산자 오버로딩

  • 멤버 함수를 이용한 연산자 오버로딩

  • Vector의 operator+() 연산자를 오버로딩해보자

  • 멤버 연산자를 작성하는 법

  • 멤버 아닌 함수를 이용한 연산자 오버로딩

목차

연산자(operator) 오버로딩

  • Vector의 operator<<() 연산자를 만들어 보자

  • friend 키워드

  • friend 클래스

  • friend 함수

  • 연산자 오버로딩에 필요한 friend 함수

  • 멤버 아닌 연산자 오버로딩을 작성하는 법

  • Vector를 출력하는 << 연산자

  • 잠… 잠깐만요!

  • operator<<() 를 고쳐보자

  • 완전히 수정한 operator<<()

목차

연산자(operator) 오버로딩

  • 연산자 오버로딩과 const

  • 연산자 오버로딩에 const를 사용하지 않는 경우

  • &를 사용하면 무슨 일이 일어나나?

  • 제한사항

코드보기: Vector 클래스에서 연산자 오버로딩하기

목차

연산자(operator) 오버로딩

  • 연산자 오버로딩을 남용하지 말 것

  • 그래서 어쩌라고요?

  • 대입(assignment) 연산자

  • 암시적 operator=

목차

암시적 함수들을 제거하는 법

  • 클래스에 딸려오는 기본 함수들

  • 클래스에 딸려오는 기본 함수들

  • 기본 생성자를 “지우는” 법

  • 기본 생성자를 “지우는” 법

  • 암시적 복사 생성자를 “지우는” 법

  • 암시적 소멸자를 “지우는” 법

  • 암시적 operator=를 “지우는” 법

개체치향 프로그래밍 3

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
많은 industry에서 C++을 사용하여 성능이 중요한 분야에서 운영체제, 비디오 게임, 가상현실, 주식거래소, 머신러닝 코어, 블록체인 등을 개발 중이다
C++을 사용하면 프로그래머에게 필수적인 하드웨어에 대한 이해도를 쌓을 수 있다
C++, Java 등 매니지드 언어를 널리 사용하는 분야에서는 성능보다도 더 빨리 제품을 개발하는 것이 중요하다
C 언어에서의 개체지향 프로그래밍을 확장하여 하드웨어 수준에서 어떻게 작동하는지 자세히 알아볼 수 있다
이 훈련과정에서는 코어 C++, 모던 C++, C++1x로 나뉘어 강의가 진행된다
미래의 프로그래머는 지속적으로 성장하기 위해 컴퓨터 하드웨어에 대해 이해하는 것이 필수적이다

Save this course

Save C++ 언매니지드 프로그래밍 to your list so you can find it easily later:
Save

Reviews summary

실습 중심의 c++ 언매니지드 프로그래밍

학생들은 실습 기반 접근 방식을 높이 평가하며, 개인의 약점 파악개선에 도움이 된다고 말합니다. 강의도 긍정적으로 평가됩니다.
실습을 통해 자신의 약점을 파악하고 개선할 수 있습니다.
"실습을 하면서 나에게 부족한 부분이 무엇인지 깨달을 수 있는 부분이 가장 도움이 된 것 같습니다."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in C++ 언매니지드 프로그래밍 with these activities:
Review the Udemy C++ course
This activity will help you refresh your knowledge of C++ basics and syntax, which will be essential for success in this course.
Browse courses on C++ Syntax
Show steps
  • Watch the introductory videos
  • Complete the practice exercises
  • Ask questions in the discussion forum
Review the basics of OOP concepts
C++ is a very hands-on OOP language that relies on you already having a foundational understanding of the basic concepts.
Browse courses on OOP
Show steps
  • Read through your notes or textbooks reviewing the basics of OOP
  • If anything is unclear, make sure to solidify your understanding by researching and reading further
Follow a tutorial on basic C++ syntax
C++ has a unique syntax compared to other languages and is considered by many experts to be very difficult to master. It is highly recommended to follow a guided tutorial to get started with the basics of the syntax.
Browse courses on C++ Syntax
Show steps
  • Search online for a guided tutorial to get started with C++ syntax
  • Follow the tutorial and try out the examples
One other activity
Expand to see all activities and additional details
Show all four activities
学习 C++ 标准模板库 (STL)
STL 是 C++ 中一个强大的库,它提供了许多有用的数据结构和算法。学习 STL 将有助于你提高代码的效率和可维护性。
Browse courses on STL
Show steps
  • 阅读有关 STL 的文档或教程
  • 完成一些有关 STL 的教程或练习

Career center

Learners who complete C++ 언매니지드 프로그래밍 will develop knowledge and skills that may be useful to these careers:
Computer Programmer
Computer programmers write and maintain the code that makes computers and software applications work. This course provides a strong foundation in the C++ programming language, which is commonly used in software development. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for computer programmers.
Software Engineer
Software engineers design, build, and test software applications, including computer games, operating systems, and web browsers. This course provides a strong foundation in the C++ programming language, which is commonly used in software development. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for software engineers.
Database Administrator
Database administrators maintain and administer databases, ensuring that data is stored securely and efficiently. This course provides a strong foundation in the C++ programming language, which is commonly used in database management. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for database administrators.
Information Security Analyst
Information security analysts protect computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course provides a strong foundation in the C++ programming language, which is commonly used in information security. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for information security analysts.
Web Developer
Web developers design and create websites. This course provides a strong foundation in the C++ programming language, which is commonly used in web development. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for web developers.
Computer Scientist
Computer scientists research and develop new computer technologies and applications. This course provides a strong foundation in the C++ programming language, which is commonly used in computer science research. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for computer scientists.
Systems Analyst
Systems analysts design and implement computer systems and applications. This course provides a strong foundation in the C++ programming language, which is commonly used in systems analysis. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for systems analysts.
Software Architect
Software architects design and implement the overall structure and architecture of software systems. This course provides a strong foundation in the C++ programming language, which is commonly used in software architecture. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for software architects.
Database Developer
Database developers design and implement databases to store and manage data. This course provides a strong foundation in the C++ programming language, which is commonly used in database development. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for database developers.
Machine Learning Engineer
Machine learning engineers design and build machine learning models to solve real-world problems. This course provides a strong foundation in the C++ programming language, which is commonly used in machine learning. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for machine learning engineers.
Computer Systems Analyst
Computer systems analysts analyze and evaluate computer systems to identify and solve problems. This course provides a strong foundation in the C++ programming language, which is commonly used in computer systems analysis. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for computer systems analysts.
Data Analyst
Data analysts collect, analyze, and interpret data to help businesses make informed decisions. This course provides a strong foundation in the C++ programming language, which is commonly used in data analysis. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for data analysts.
IT Project Manager
IT project managers plan, organize, and manage IT projects. This course provides a strong foundation in the C++ programming language, which is commonly used in IT project management. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for IT project managers.
Network Administrator
Network administrators design, implement, and maintain computer networks. This course provides a strong foundation in the C++ programming language, which is commonly used in network administration. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for network administrators.
Information Technology Specialist
Information technology specialists provide technical support and assistance to users of computer systems and networks. This course provides a strong foundation in the C++ programming language, which is commonly used in information technology support. The course covers basic syntax, data structures, algorithms, and object-oriented programming, all of which are essential skills for information technology specialists.

Reading list

We've selected seven books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in C++ 언매니지드 프로그래밍.
"C++ 语言设计与演化" 是一本关于 C++ 语言设计的书。它由 C++ 的创造者 Bjarne Stroustrup 所撰写。本书是任何想要了解 C++ 语言设计的中文读者的必读之作。
"The C++ Programming Language" is the definitive guide to the C++ programming language. It was written by Bjarne Stroustrup, the creator of C++. must-read for anyone who wants to learn C++ or improve their C++ skills.
"C++ Primer 中文版" 是 "C++ Primer" 的中文译本。它涵盖了 C++ 的各个方面,从基础概念到高级技术。本书是任何想要学习 C++ 或提高其 C++ 技能的中文读者的宝贵资源。
"Effective C++" classic book on C++ programming. It covers a wide range of topics, from basic concepts to advanced techniques. great resource for anyone who wants to improve their C++ skills.
"C++ Primer" comprehensive guide to the C++ programming language. It covers all the basics of C++, from the most basic concepts to the most advanced features. great resource for anyone who wants to learn C++ or improve their C++ skills.
"C++ Concurrency in Action" book about concurrency in C++. It covers a wide range of topics, from the basics of concurrency to the most advanced features. great resource for anyone who wants to learn about concurrency in C++.
"C++ Templates: The Complete Guide" book about templates in C++. It covers a wide range of topics, from the basics of templates to the most advanced features. great resource for anyone who wants to learn about templates in C++.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to C++ 언매니지드 프로그래밍.
모두를 위한 머신 러닝
Most relevant
MATLAB을 사용한 프로그래밍 소개
Most relevant
머신 러닝 자세히 알아보기: 기술적 팁, 요령, 그리고 함정
Most relevant
기술 지원 기초
Most relevant
비대면 시대에 꼭 필요한 비즈니스 영어
Most relevant
현대 로봇공학, 강좌 1: 로봇 동작의 기초
Most relevant
신재생 에너지 기술 기초
Most relevant
TensorFlow 2 시작하기
Most relevant
AI로 피그마(Figma)에 날개 달기
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser