<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=209.58.130.196</id>
	<title>ZeroWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=209.58.130.196"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php/Special:Contributions/209.58.130.196"/>
	<updated>2026-05-14T20:31:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MFC%2B%2B&amp;diff=34377</id>
		<title>MFC++</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MFC%2B%2B&amp;diff=34377"/>
		<updated>2017-01-30T18:08:53Z</updated>

		<summary type="html">&lt;p&gt;209.58.130.196: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
* &#039;&#039;&#039;M&#039;&#039;&#039;astering &#039;&#039;&#039;F&#039;&#039;&#039;urther &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
** --Mxxxxx Fxxxxxx C++...--&lt;br /&gt;
&lt;br /&gt;
== 진행 ==&lt;br /&gt;
* 진행 방식은 과거 [[미시Cpp]]를 벤치마킹(?)해서 진행합니다.&lt;br /&gt;
** 즉, 주마다 특정 주제 내용을 소개하는 방식으로 진행됩니다.&lt;br /&gt;
* 진행 스타일은 과거 [[CS]] 스터디와 동일합니다.&lt;br /&gt;
** --템플릿도 그냥 복사해서...--&lt;br /&gt;
&lt;br /&gt;
* 2016년 2학기 시작 직후부터 시작합니다.&lt;br /&gt;
* 되도록이면 수요일 정모 직후, 7시에서 9시까지 진행합니다.&lt;br /&gt;
** 주마다 진행 요일이 불가피하게 바뀌어야 할 수도 있습니다.&lt;br /&gt;
&lt;br /&gt;
* 진행에 사용되는 소스 코드는 해당 레포지토리에 있습니다.&lt;br /&gt;
** [https://github.com/nErumin/MFCplusplusSource]&lt;br /&gt;
== 참가자 ==&lt;br /&gt;
* 기반 C++ 내용에 대해서는 거의 생략할 예정이므로, 대체적으로 이미 C++을 공부해본 경험이 있으신 편이 좋습니다.&lt;br /&gt;
* 참가하실 분은 아래 이름을 적어주세요!&lt;br /&gt;
* [[신형철]], [[박인서]], ~~프로 도강러~~[[성훈]]&lt;br /&gt;
== 목표 ==&lt;br /&gt;
* C++ 돌아보기 --돌아보는 척 하면서 더 낯설게 만들기--&lt;br /&gt;
* C++11과 C++14의 내용 숙지&lt;br /&gt;
* 흔한 C++ 프로그래밍 실수 방지하기&lt;br /&gt;
* C++에서의 동시성 활용하기&lt;br /&gt;
&lt;br /&gt;
== 참고 ==&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.lafejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788945072207&amp;amp;orderClick=LAG&amp;amp;Kc=|C++ Primer 5th Edition]&lt;br /&gt;
** 기본 바탕은 이 책을 기준으로 합니다.&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791195444946&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956743998&amp;amp;orderClick=LAH&amp;amp;Kc=|More Effective C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788966261642&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective Modern C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956743110&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective STL]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewEng.laf?ejkGb=BNT&amp;amp;mallGb=ENG&amp;amp;barcode=9781933988771&amp;amp;orderClick=LAG&amp;amp;Kc=|C++ Concurrency In Action]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788980545063&amp;amp;orderClick=LAG&amp;amp;Kc=|Exceptional C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788955507904&amp;amp;orderClick=LAG&amp;amp;Kc=|More Exceptional C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956742618&amp;amp;orderClick=LAG&amp;amp;Kc=|Exceptional C++ Style]&lt;br /&gt;
* 그 외 위키피디아와 C++ 레퍼런스 사이트 등&lt;br /&gt;
&lt;br /&gt;
== 진행 내용 ==&lt;br /&gt;
* [[MFC++/9월7일]]&lt;br /&gt;
* [[MFC++/10월5일]]&lt;br /&gt;
* MFC++/11월2일&lt;br /&gt;
* MFC++/11월9일&lt;br /&gt;
* MFC++/11월30일&lt;br /&gt;
* MFC++/1월4일&lt;br /&gt;
* MFC++/1월11일&lt;br /&gt;
* MFC++/1월18일&lt;br /&gt;
&lt;br /&gt;
== 진행 예정 내용 ==&lt;br /&gt;
* Chapter 1. 변수와 타입&lt;br /&gt;
** #1. 산술 타입&lt;br /&gt;
** = 부동소수점 연산 시에는 정밀도 손실을 항상 경계하자.&lt;br /&gt;
** = (지나가는) long long의 숨겨진 이야기&lt;br /&gt;
** #2. 문자 타입&lt;br /&gt;
** = char, signed char, unsigned char를 구분하자.&lt;br /&gt;
** = 때로는 다양한 문자 표현들을 고려하자.&lt;br /&gt;
** = 필요하다면 이스케이프 시퀀스는 무시하자.&lt;br /&gt;
** #3. 내장 타입 간 형변환&lt;br /&gt;
** = 타입의 범위를 넘어가는 값 대입은 예상처럼 작동할 수도, 그렇지 않을 수도 있다.&lt;br /&gt;
** = 부호 있는 타입과 부호 없는 타입을 섞어쓰는 표현식은 항상 경계하자.&lt;br /&gt;
** #4. 상수&lt;br /&gt;
** = 다양한 상수 표기를 활용하자.&lt;br /&gt;
** #5. 초기화와 분리 컴파일&lt;br /&gt;
** = 초기화와 대입의 의미를 구분하자.&lt;br /&gt;
** = 기존의 초기화 방식과 목록 초기화 방식의 차이점을 숙지하자.&lt;br /&gt;
** = 변수의 선언과 정의를 구분하자.&lt;br /&gt;
** #6. 복합 타입&lt;br /&gt;
** = 참조자의 의미를 돌아보자.&lt;br /&gt;
** = 포인터의 의미를 돌아보자.&lt;br /&gt;
** = 복합 타입과 바탕 타입을 형식으로써 섞어 사용하지 말자.&lt;br /&gt;
** = 널 포인터를 표현하고 싶을 때 선택할 수 있는 것은 딱 하나뿐이다.&lt;br /&gt;
** = 참조자와 포인터를 구분해서 사용하자.&lt;br /&gt;
** #7. const와 constexpr&lt;br /&gt;
** = 초기화와 const의 관계를 파악하자.&lt;br /&gt;
** = const 변수를 여러 파일에서 공유하려 할 때는 주의하자.&lt;br /&gt;
** = 상위 const와 하위 const를 구분하자.&lt;br /&gt;
** = 적합하다면, constexpr을 항상 곁에 두자.&lt;br /&gt;
** #8. auto와 decltype&lt;br /&gt;
** = auto의 동작 원리를 파악하자.&lt;br /&gt;
** = decltype의 동작 원리를 파악하자.&lt;br /&gt;
** #9. 나머지 이야기&lt;br /&gt;
** = 타입 별칭을 사용할 때는 별칭 선언을 사용하자.&lt;br /&gt;
** = 상황에 따라서는 변수도 일반화해서 정의해보자.&lt;br /&gt;
** = (지나가는) 코드를 분석해보자.&lt;br /&gt;
** = (지나가는) 키워드는 왜 식별자로 사용이 불가능할까?&lt;br /&gt;
** = (지나가는) 내장 bool 타입은 꼭 필요한걸까?&lt;br /&gt;
** = (지나가는) C 라이브러리와 C++ 버전 라이브러리의 차이는 무엇일까?&lt;br /&gt;
&lt;br /&gt;
* Chapter 2. 문자열과 배열, 벡터&lt;br /&gt;
** #1. string&lt;br /&gt;
** = 유니코드에 맞는 string을 사용하자.&lt;br /&gt;
** = string 생성자 종류와 string 연산들의 종류를 대략적으로 알아두자.&lt;br /&gt;
** = 문자 제어에 도움이 되는 함수들을 알아두자.&lt;br /&gt;
** = string을 스트림을 통해 읽어들일 때, istream/getline 간 차이를 파악하자.&lt;br /&gt;
** = size_t, size_type 등의 typedef 타입들의 의미를 파악하자.&lt;br /&gt;
** = C-Style String은 가급적이면 사용하지 말자.&lt;br /&gt;
** #2. 배열&lt;br /&gt;
** = 포인터 타입과 배열 타입 간 형식 연역 차이를 파악하자.&lt;br /&gt;
** = 포인터를 배열에 대한 반복자로 생각하자.&lt;br /&gt;
** #3. 벡터&lt;br /&gt;
** = 벡터 생성자 종류와 벡터 연산들의 종류를 대략적으로 파악하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 3. 표현식과 문장, 함수&lt;br /&gt;
** #1. 변환과 캐스팅&lt;br /&gt;
** = (지나가는) 산술 타입 간 암시적 변환과 정수 승격 기준을 알아보자.&lt;br /&gt;
** = C++ 스타일의 캐스팅을 사용하자.&lt;br /&gt;
** #2. 함수&lt;br /&gt;
** = 자동 객체와 지역 static 객체를 돌아보자.&lt;br /&gt;
** = const와 함수 매개변수의 관계에 조심하자.&lt;br /&gt;
** = 배열 매개변수를 선언하는 다양한 방법을 파악하자.&lt;br /&gt;
** = initializer_list를 사용해서 가변 매개변수를 흉내내보자.&lt;br /&gt;
** = (지나가는) 함수에서 배열 타입을 반환해보자.&lt;br /&gt;
** = 후행 반환 타입을 통해 함수를 정의해보자.&lt;br /&gt;
** = 반환 타입 유추가 필요할 땐 auto를 사용하자.&lt;br /&gt;
** = const_cast가 함수 속에서 유용하게 쓰이는 경우를 알아두자.&lt;br /&gt;
** = 매개변수에 기본 값이 필요하다면 기본 인자를 선언해보자.&lt;br /&gt;
** = inline 지정은 만능이 아님을 알아두자.&lt;br /&gt;
** = 함수 일치 과정을 파악하자.&lt;br /&gt;
** = 함수가 예외를 던지지 않는다면 noexcept로 선언하자.&lt;br /&gt;
** = 예외 명세는 가급적 사용하지 말자.&lt;br /&gt;
** #3. 이런저런 이야기&lt;br /&gt;
** = switch 레이블에서 초기화 우회를 조심하자.&lt;br /&gt;
** = 피연산자 평가 순서에 조심하자.&lt;br /&gt;
** = sizeof 연산자를 돌아보자.&lt;br /&gt;
** = 디버깅에 도움이 되는 도구들을 알아두자.&lt;br /&gt;
** = 가급적이면 auto를 선호하자.&lt;br /&gt;
** = auto 형식 추론이 예상치 않은 타입일 경우 캐스팅을 활용하자.&lt;br /&gt;
** = 매크로보다는 상수나 inline이 낫다.&lt;br /&gt;
** = (지나가는) 캐스팅 퀴즈&lt;br /&gt;
&lt;br /&gt;
* Chapter 4. 클래스&lt;br /&gt;
** #1. 멤버 함수&lt;br /&gt;
** = this의 정체를 파악하자.&lt;br /&gt;
** = const 멤버 함수의 배경과 this의 관계를 알아두자.&lt;br /&gt;
** = 멤버 함수 정의와 inline과의 관계를 파악하자.&lt;br /&gt;
** = 클래스는 새로운 유효 범위를 형성한다.&lt;br /&gt;
** = 클래스에 대해 컴파일러가 이름 검색을 하는 과정을 알아두자.&lt;br /&gt;
** = 멤버 함수에 대해 컴파일러가 이름 검색을 하는 과정을 알아두자. &lt;br /&gt;
** #2. 생성자&lt;br /&gt;
** = 생성자와 const 객체의 관계를 파악하자.&lt;br /&gt;
** = 명시적으로 합성 멤버를 원한다면 default를 명시하자.&lt;br /&gt;
** = 멤버 변수의 초기화 값이 선택되는 순서를 알아두자.&lt;br /&gt;
** = 생성자 초기화 리스트 내에서 멤버의 초기화 순서에 주의하자.&lt;br /&gt;
** = 위임 생성자를 활용하자.&lt;br /&gt;
** = 생성자 선언 시에는 변환 생성자에 항상 주의해야 한다.&lt;br /&gt;
** #3. 다양한 클래스들&lt;br /&gt;
** = 집합 클래스에 대해 알아보자.&lt;br /&gt;
** = 상수 클래스에 대해 알아보자.&lt;br /&gt;
** #4. 클래스와 정적 멤버&lt;br /&gt;
** = 정적 멤버의 선언과 정의, 사용 방법을 알아두자.&lt;br /&gt;
** #5. 프렌드&lt;br /&gt;
** = 클래스 간의 프렌드 관계를 파악하자.&lt;br /&gt;
** = 프렌드 선언과 함수와의 관계를 파악하자.&lt;br /&gt;
** = friend 선언과 일반적인 선언은 차이가 있음을 알아두자.&lt;br /&gt;
** #5. 이런저런 이야기&lt;br /&gt;
** = 클래스 멤버의 mutable 속성에 대해서 알아두자.&lt;br /&gt;
** = const 멤버 함수가 상수성을 반드시 보장하지 않음을 명심하자.&lt;br /&gt;
** = 형식 정의 시 class와 struct 키워드의 차이를 알아두자.&lt;br /&gt;
** = 기본 생성자의 존재 여부는 가볍게 볼 것이 아니다.&lt;br /&gt;
** = 물리적인 const와 논리적인 const를 구별하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 5. I/O와 C++&lt;br /&gt;
** #1. 라이브러리&lt;br /&gt;
** = 표준 라이브러리 I/O 객체의 종류와 구성 방식을 알아보자.&lt;br /&gt;
** = 표준 라이브러리 I/O 객체의 특징을 알아보자.&lt;br /&gt;
** #2. I/O와 조건 상태와 버퍼 관리&lt;br /&gt;
** = 스트림과 조건식과의 관계를 파악하자.&lt;br /&gt;
** = 스트림의 상태를 점검해보자!&lt;br /&gt;
** = 스트림을 서로 묶어서 버퍼를 관리해보자.&lt;br /&gt;
** #3. 파일 I/O&lt;br /&gt;
** = 파일 스트림 객체의 사용법을 다시 돌아보자.&lt;br /&gt;
** = 파일 스트림을 여는 여러가지 방식을 정리해보자.&lt;br /&gt;
** #4. 문자열 I/O&lt;br /&gt;
** = 문자열 스트림 객체의 사용법을 다시 돌아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 6. 순차 컨테이너&lt;br /&gt;
** #1. 순차 컨테이너 개관&lt;br /&gt;
** = 사용 가능한 순차 컨테이너의 종류를 알아보자.&lt;br /&gt;
** = 컨테이너의 공통적인 연산의 종류에 대해 알아보자.&lt;br /&gt;
** = 반복자 범위에 대해서 알아보자.&lt;br /&gt;
** #2. 순차 컨테이너 연산&lt;br /&gt;
** = 순차 컨테이너에 대한 assign과 swap 연산에 대해 알아보자.&lt;br /&gt;
** = 순차 컨테이너에 대한 요소 삽입/접근/삭제에 대해 알아보자.&lt;br /&gt;
** = 반복자 무효화에 대해 항상 조심하자.&lt;br /&gt;
** = vector/string에서의 capacity와 size를 구분하자.&lt;br /&gt;
** #3. Advanced String&lt;br /&gt;
** = string 객체를 생성하는 더 많은 방법을 알아보자.&lt;br /&gt;
** = string의 내용을 더 다양하게 조작해보자.&lt;br /&gt;
** = string 검색과 비교에 대해 알아보자.&lt;br /&gt;
** = string과 수치 변환에 대해 알아보자.&lt;br /&gt;
** #4. 컨테이너 어댑터&lt;br /&gt;
** = 컨테이너 어댑터의 공통적인 연산의 종류에 대해 알아보자.&lt;br /&gt;
** = 스택/큐 연산에 대해 알아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 7. 일반화 알고리즘&lt;br /&gt;
** #1. 일반화 알고리즘 개관&lt;br /&gt;
** = 알고리즘과 반복자, 알고리즘과 컨테이너 사이의 관계를 알아보자.&lt;br /&gt;
** #2. 일반화 알고리즘의 분류&lt;br /&gt;
** = 요소 읽기 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 요소 기록 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 요소 정렬 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 수많은 알고리즘을 이름에 따라 분류해보자.&lt;br /&gt;
** = 알고리즘들의 매개변수 패턴에 대해 알아보자.&lt;br /&gt;
** #3. 람다 표현식&lt;br /&gt;
** = 알고리즘과 술어 함수와의 관계를 알아보자.&lt;br /&gt;
** = 함수 호출성 객체, 펑터(Functor)에 대해 알아보자.&lt;br /&gt;
** = 람다 표현식의 형식을 살펴보자.&lt;br /&gt;
** = 일반적 람다에 대해 알아보자.&lt;br /&gt;
** = 갈무리 목록의 사용 형식들에 대해 알아보자.&lt;br /&gt;
** #4. 함수 바인딩&lt;br /&gt;
** = 함수 어댑터 역할을 하는 bind에 대해 알아보자.&lt;br /&gt;
** = 함수 바인딩에 쓰이는 Placeholder에 대해 알아보자.&lt;br /&gt;
** = 함수 바인딩에 유용한 functional 함수들을 알아두자.&lt;br /&gt;
** #5. 반복자&lt;br /&gt;
** = 특수한 반복자의 종류에 대해 알아보자.&lt;br /&gt;
** = 삽입 반복자, inserter 반복자에 대해 알아보자.&lt;br /&gt;
** = 스트림 반복자에 대해서 알아보자.&lt;br /&gt;
** = 역방향 반복자에 대해서 알아보자.&lt;br /&gt;
** = 반복자 범주와 알고리즘과의 관계를 알아보자.&lt;br /&gt;
** #6. 컨테이너 특수화 알고리즘&lt;br /&gt;
** = 리스트에 특화되어 있는 알고리즘 함수들을 살펴보자.&lt;br /&gt;
** #7. 이런저런 이야기&lt;br /&gt;
** = 람다 내에서 암묵적으로 갈무리하는 것을 피하자.&lt;br /&gt;
** = 함수 바인딩보다는 람다를 선호하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 8. 연관 컨테이너&lt;br /&gt;
** #1. 연관 컨테이너 개관&lt;br /&gt;
** = 연관 컨테이너의 종류에 대해 알아보자.&lt;br /&gt;
** = pair 객체에 대해 알아보자.&lt;br /&gt;
** = 연관 컨테이너의 키 타입 조건을 알아보자.&lt;br /&gt;
** #2. 연관 컨테이너 연산&lt;br /&gt;
** = 연관 컨테이너에 정의된 추가 타입 별칭들을 알아보자.&lt;br /&gt;
** = 연관 컨테이너와 반복자의 관계를 알아보자.&lt;br /&gt;
** = 연관 컨테이너와 알고리즘과의 관계를 알아보자.&lt;br /&gt;
** = 연관 컨테이너에 요소를 추가/삭제해보자.&lt;br /&gt;
** = 연관 컨테이너 요소에 접근해보자.&lt;br /&gt;
** #3. 순서 없는 컨테이너&lt;br /&gt;
** = 순서 없는 컨테이너가 요소를 저장하는 방법에 대해 알아보자.&lt;br /&gt;
** = 버킷을 관리하고 조회하는 함수들에 대해 알아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 9. 효율적이고 안전한 STL&lt;br /&gt;
** #1. 더 폭넓은 이해를 위해&lt;br /&gt;
** = STL 동작의 대부분은 결국 복사임을 파악하자.&lt;br /&gt;
** = string이 라이브러리마다 전부 똑같은 string은 아님을 이해하자.&lt;br /&gt;
** = bool에 대한 vector는 STL 요소가 아님을 파악하자.&lt;br /&gt;
** = 컨테이너 일반화 코드가 아닌, 캡슐화를 이용하자.&lt;br /&gt;
** = C와 vector/string의 호환성에 대해 알아보자.&lt;br /&gt;
** = STL 컨테이너와 Thread-Safety의 관계를 파악하자. (x)&lt;br /&gt;
** = 상등성과 동등성을 구분해서 생각하자. (x)&lt;br /&gt;
** #2. 더 빠른 코드를 위해&lt;br /&gt;
** = empty 멤버 함수는 괜히 있는 것이 아니다.&lt;br /&gt;
** = 요소보다는 범위에 초점을 맞추자. (x)&lt;br /&gt;
** = reserve로 잦은 메모리 할당을 피하자. (x)&lt;br /&gt;
** #3. 더 안전한 코드를 위해&lt;br /&gt;
** = 동적 배열보다는 컨테이너를 사용하자. (x)&lt;br /&gt;
** = 컨테이너 요소 삭제 시에는 항상 경계할 필요가 있다. (x)&lt;br /&gt;
** #4. 더 나은 최적화를 위해&lt;br /&gt;
** = 적합한 때에 적합한 컨테이너를 사용하자. (x)&lt;br /&gt;
** = shrink_to_fit 멤버 함수에 걸맞는 방법을 알아보자. (x)&lt;br /&gt;
&lt;br /&gt;
* Chapter 10. 동적 메모리 관리&lt;br /&gt;
** #1. 스마트 포인터&lt;br /&gt;
** = 스마트 포인터와 그 종류에 대해 알아보자.&lt;br /&gt;
** = shared_ptr, unique_ptr의 공통적 연산에 대해 알아보자.&lt;br /&gt;
** = shared_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** = unique_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** = weak_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** #2. 직접적인 객체 할당과 해제&lt;br /&gt;
** = new를 통해서 자유 공간에 객체를 동적으로 할당해보자.&lt;br /&gt;
** = delete를 통해서 동적으로 할당한 객체를 해제해보자.&lt;br /&gt;
** = 스마트 포인터 초기화에 new를 사용할 수 있는 방법을 알아보자.&lt;br /&gt;
** = 스마트 포인터와 일반적인 포인터의 논리를 섞어쓰지 말자.&lt;br /&gt;
** #3. 배열의 동적 할당과 해제&lt;br /&gt;
** = new를 통해서 배열을 동적으로 할당해보자.&lt;br /&gt;
** = delete를 통해서 배열을 할당 해제해보자.&lt;br /&gt;
** = 스마트 포인터로 배열을 동적으로 관리해보자.&lt;br /&gt;
** #4. 저수준 메모리 관리&lt;br /&gt;
** = 메모리 할당을 위한 allocator 클래스에 대해 알아보자.&lt;br /&gt;
** = 미초기화 메모리에 대한 객체 생성을 도와주는 알고리즘을 알아보자.&lt;br /&gt;
** #5. 이런저런 이야기&lt;br /&gt;
&lt;br /&gt;
* Chapter 11. 복사와 이동&lt;br /&gt;
* Chapter 12. 연산자 오버로딩&lt;br /&gt;
* Chapter 13. 객체 지향 프로그래밍과 C++&lt;br /&gt;
* Chapter 14. 템플릿&lt;br /&gt;
* Chapter 15. 예외 처리와 예외 안전성&lt;br /&gt;
&lt;br /&gt;
* 계속 작성 예정입니다.&lt;br /&gt;
&lt;br /&gt;
== 덧글 ==&lt;br /&gt;
* 얍 - [[성훈]]&lt;br /&gt;
** 얍! 얍! 얍! - [[박인서]]&lt;br /&gt;
-----------&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>209.58.130.196</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MFC%2B%2B&amp;diff=34376</id>
		<title>MFC++</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MFC%2B%2B&amp;diff=34376"/>
		<updated>2017-01-30T18:08:24Z</updated>

		<summary type="html">&lt;p&gt;209.58.130.196: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
* &#039;&#039;&#039;M&#039;&#039;&#039;astering &#039;&#039;&#039;F&#039;&#039;&#039;urther &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
** --Mxxxxx Fxxxxxx C++...--&lt;br /&gt;
&lt;br /&gt;
== 진행 ==&lt;br /&gt;
* 진행 방식은 과거 [[미시Cpp]]를 벤치마킹(?)해서 진행합니다.&lt;br /&gt;
** 즉, 주마다 특정 주제 내용을 소개하는 방식으로 진행됩니다.&lt;br /&gt;
* 진행 스타일은 과거 [[CS]] 스터디와 동일합니다.&lt;br /&gt;
** --템플릿도 그냥 복사해서...--&lt;br /&gt;
&lt;br /&gt;
* 2016년 2학기 시작 직후부터 시작합니다.&lt;br /&gt;
* 되도록이면 수요일 정모 직후, 7시에서 9시까지 진행합니다.&lt;br /&gt;
** 주마다 진행 요일이 불가피하게 바뀌어야 할 수도 있습니다.&lt;br /&gt;
&lt;br /&gt;
* 진행에 사용되는 소스 코드는 해당 레포지토리에 있습니다.&lt;br /&gt;
** [https://github.com/nErumin/MFCplusplusSource]&lt;br /&gt;
== 참가자 ==&lt;br /&gt;
* 기반 C++ 내용에 대해서는 거의 생략할 예정이므로, 대체적으로 이미 C++을 공부해본 경험이 있으신 편이 좋습니다.&lt;br /&gt;
* 참가하실 분은 아래 이름을 적어주세요!&lt;br /&gt;
* [[신형철]], [[박인서]], ~~프로 도강러~~[[성훈]]&lt;br /&gt;
== 목표 ==&lt;br /&gt;
* C++ 돌아보기 --돌아보는 척 하면서 더 낯설게 만들기--&lt;br /&gt;
* C++11과 C++14의 내용 숙지&lt;br /&gt;
* 흔한 C++ 프로그래밍 실수 방지하기&lt;br /&gt;
* C++에서의 동시성 활용하기&lt;br /&gt;
&lt;br /&gt;
== 참고 ==&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.lafejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788945072207&amp;amp;orderClick=LAG&amp;amp;Kc=|C++ Primer 5th Edition]&lt;br /&gt;
** 기본 바탕은 이 책을 기준으로 합니다.&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791195444946&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956743998&amp;amp;orderClick=LAH&amp;amp;Kc=|More Effective C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788966261642&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective Modern C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956743110&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective STL]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewEng.laf?ejkGb=BNT&amp;amp;mallGb=ENG&amp;amp;barcode=9781933988771&amp;amp;orderClick=LAG&amp;amp;Kc=|C++ Concurrency In Action]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788980545063&amp;amp;orderClick=LAG&amp;amp;Kc=|Exceptional C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788955507904&amp;amp;orderClick=LAG&amp;amp;Kc=|More Exceptional C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956742618&amp;amp;orderClick=LAG&amp;amp;Kc=|Exceptional C++ Style]&lt;br /&gt;
* 그 외 위키피디아와 C++ 레퍼런스 사이트 등&lt;br /&gt;
&lt;br /&gt;
== 진행 내용 ==&lt;br /&gt;
* [[MFC++/9월7일]]&lt;br /&gt;
* [[MFC++/10월5일]]&lt;br /&gt;
* MFC++/11월2일&lt;br /&gt;
* MFC++/11월9일&lt;br /&gt;
* MFC++/11월30일&lt;br /&gt;
* MFC++/1월4일&lt;br /&gt;
* MFC++/1월11일&lt;br /&gt;
* MFC++/1월18일&lt;br /&gt;
&lt;br /&gt;
== 진행 예정 내용 ==&lt;br /&gt;
* Chapter 1. 변수와 타입&lt;br /&gt;
** #1. 산술 타입&lt;br /&gt;
** = 부동소수점 연산 시에는 정밀도 손실을 항상 경계하자.&lt;br /&gt;
** = (지나가는) long long의 숨겨진 이야기&lt;br /&gt;
** #2. 문자 타입&lt;br /&gt;
** = char, signed char, unsigned char를 구분하자.&lt;br /&gt;
** = 때로는 다양한 문자 표현들을 고려하자.&lt;br /&gt;
** = 필요하다면 이스케이프 시퀀스는 무시하자.&lt;br /&gt;
** #3. 내장 타입 간 형변환&lt;br /&gt;
** = 타입의 범위를 넘어가는 값 대입은 예상처럼 작동할 수도, 그렇지 않을 수도 있다.&lt;br /&gt;
** = 부호 있는 타입과 부호 없는 타입을 섞어쓰는 표현식은 항상 경계하자.&lt;br /&gt;
** #4. 상수&lt;br /&gt;
** = 다양한 상수 표기를 활용하자.&lt;br /&gt;
** #5. 초기화와 분리 컴파일&lt;br /&gt;
** = 초기화와 대입의 의미를 구분하자.&lt;br /&gt;
** = 기존의 초기화 방식과 목록 초기화 방식의 차이점을 숙지하자.&lt;br /&gt;
** = 변수의 선언과 정의를 구분하자.&lt;br /&gt;
** #6. 복합 타입&lt;br /&gt;
** = 참조자의 의미를 돌아보자.&lt;br /&gt;
** = 포인터의 의미를 돌아보자.&lt;br /&gt;
** = 복합 타입과 바탕 타입을 형식으로써 섞어 사용하지 말자.&lt;br /&gt;
** = 널 포인터를 표현하고 싶을 때 선택할 수 있는 것은 딱 하나뿐이다.&lt;br /&gt;
** = 참조자와 포인터를 구분해서 사용하자.&lt;br /&gt;
** #7. const와 constexpr&lt;br /&gt;
** = 초기화와 const의 관계를 파악하자.&lt;br /&gt;
** = const 변수를 여러 파일에서 공유하려 할 때는 주의하자.&lt;br /&gt;
** = 상위 const와 하위 const를 구분하자.&lt;br /&gt;
** = 적합하다면, constexpr을 항상 곁에 두자.&lt;br /&gt;
** #8. auto와 decltype&lt;br /&gt;
** = auto의 동작 원리를 파악하자.&lt;br /&gt;
** = decltype의 동작 원리를 파악하자.&lt;br /&gt;
** #9. 나머지 이야기&lt;br /&gt;
** = 타입 별칭을 사용할 때는 별칭 선언을 사용하자.&lt;br /&gt;
** = 상황에 따라서는 변수도 일반화해서 정의해보자.&lt;br /&gt;
** = (지나가는) 코드를 분석해보자.&lt;br /&gt;
** = (지나가는) 키워드는 왜 식별자로 사용이 불가능할까?&lt;br /&gt;
** = (지나가는) 내장 bool 타입은 꼭 필요한걸까?&lt;br /&gt;
** = (지나가는) C 라이브러리와 C++ 버전 라이브러리의 차이는 무엇일까?&lt;br /&gt;
&lt;br /&gt;
* Chapter 2. 문자열과 배열, 벡터&lt;br /&gt;
** #1. string&lt;br /&gt;
** = 유니코드에 맞는 string을 사용하자.&lt;br /&gt;
** = string 생성자 종류와 string 연산들의 종류를 대략적으로 알아두자.&lt;br /&gt;
** = 문자 제어에 도움이 되는 함수들을 알아두자.&lt;br /&gt;
** = string을 스트림을 통해 읽어들일 때, istream/getline 간 차이를 파악하자.&lt;br /&gt;
** = size_t, size_type 등의 typedef 타입들의 의미를 파악하자.&lt;br /&gt;
** = C-Style String은 가급적이면 사용하지 말자.&lt;br /&gt;
** #2. 배열&lt;br /&gt;
** = 포인터 타입과 배열 타입 간 형식 연역 차이를 파악하자.&lt;br /&gt;
** = 포인터를 배열에 대한 반복자로 생각하자.&lt;br /&gt;
** #3. 벡터&lt;br /&gt;
** = 벡터 생성자 종류와 벡터 연산들의 종류를 대략적으로 파악하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 3. 표현식과 문장, 함수&lt;br /&gt;
** #1. 변환과 캐스팅&lt;br /&gt;
** = (지나가는) 산술 타입 간 암시적 변환과 정수 승격 기준을 알아보자.&lt;br /&gt;
** = C++ 스타일의 캐스팅을 사용하자.&lt;br /&gt;
** #2. 함수&lt;br /&gt;
** = 자동 객체와 지역 static 객체를 돌아보자.&lt;br /&gt;
** = const와 함수 매개변수의 관계에 조심하자.&lt;br /&gt;
** = 배열 매개변수를 선언하는 다양한 방법을 파악하자.&lt;br /&gt;
** = initializer_list를 사용해서 가변 매개변수를 흉내내보자.&lt;br /&gt;
** = (지나가는) 함수에서 배열 타입을 반환해보자.&lt;br /&gt;
** = 후행 반환 타입을 통해 함수를 정의해보자.&lt;br /&gt;
** = 반환 타입 유추가 필요할 땐 auto를 사용하자.&lt;br /&gt;
** = const_cast가 함수 속에서 유용하게 쓰이는 경우를 알아두자.&lt;br /&gt;
** = 매개변수에 기본 값이 필요하다면 기본 인자를 선언해보자.&lt;br /&gt;
** = inline 지정은 만능이 아님을 알아두자.&lt;br /&gt;
** = 함수 일치 과정을 파악하자.&lt;br /&gt;
** = 함수가 예외를 던지지 않는다면 noexcept로 선언하자.&lt;br /&gt;
** = 예외 명세는 가급적 사용하지 말자.&lt;br /&gt;
** #3. 이런저런 이야기&lt;br /&gt;
** = switch 레이블에서 초기화 우회를 조심하자.&lt;br /&gt;
** = 피연산자 평가 순서에 조심하자.&lt;br /&gt;
** = sizeof 연산자를 돌아보자.&lt;br /&gt;
** = 디버깅에 도움이 되는 도구들을 알아두자.&lt;br /&gt;
** = 가급적이면 auto를 선호하자.&lt;br /&gt;
** = auto 형식 추론이 예상치 않은 타입일 경우 캐스팅을 활용하자.&lt;br /&gt;
** = 매크로보다는 상수나 inline이 낫다.&lt;br /&gt;
** = (지나가는) 캐스팅 퀴즈&lt;br /&gt;
&lt;br /&gt;
* Chapter 4. 클래스 Basic&lt;br /&gt;
** #1. 멤버 함수&lt;br /&gt;
** = this의 정체를 파악하자.&lt;br /&gt;
** = const 멤버 함수의 배경과 this의 관계를 알아두자.&lt;br /&gt;
** = 멤버 함수 정의와 inline과의 관계를 파악하자.&lt;br /&gt;
** = 클래스는 새로운 유효 범위를 형성한다.&lt;br /&gt;
** = 클래스에 대해 컴파일러가 이름 검색을 하는 과정을 알아두자.&lt;br /&gt;
** = 멤버 함수에 대해 컴파일러가 이름 검색을 하는 과정을 알아두자. &lt;br /&gt;
** #2. 생성자&lt;br /&gt;
** = 생성자와 const 객체의 관계를 파악하자.&lt;br /&gt;
** = 명시적으로 합성 멤버를 원한다면 default를 명시하자.&lt;br /&gt;
** = 멤버 변수의 초기화 값이 선택되는 순서를 알아두자.&lt;br /&gt;
** = 생성자 초기화 리스트 내에서 멤버의 초기화 순서에 주의하자.&lt;br /&gt;
** = 위임 생성자를 활용하자.&lt;br /&gt;
** = 생성자 선언 시에는 변환 생성자에 항상 주의해야 한다.&lt;br /&gt;
** #3. 다양한 클래스들&lt;br /&gt;
** = 집합 클래스에 대해 알아보자.&lt;br /&gt;
** = 상수 클래스에 대해 알아보자.&lt;br /&gt;
** #4. 클래스와 정적 멤버&lt;br /&gt;
** = 정적 멤버의 선언과 정의, 사용 방법을 알아두자.&lt;br /&gt;
** #5. 프렌드&lt;br /&gt;
** = 클래스 간의 프렌드 관계를 파악하자.&lt;br /&gt;
** = 프렌드 선언과 함수와의 관계를 파악하자.&lt;br /&gt;
** = friend 선언과 일반적인 선언은 차이가 있음을 알아두자.&lt;br /&gt;
** #5. 이런저런 이야기&lt;br /&gt;
** = 클래스 멤버의 mutable 속성에 대해서 알아두자.&lt;br /&gt;
** = const 멤버 함수가 상수성을 반드시 보장하지 않음을 명심하자.&lt;br /&gt;
** = 형식 정의 시 class와 struct 키워드의 차이를 알아두자.&lt;br /&gt;
** = 기본 생성자의 존재 여부는 가볍게 볼 것이 아니다.&lt;br /&gt;
** = 물리적인 const와 논리적인 const를 구별하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 5. I/O와 C++&lt;br /&gt;
** #1. 라이브러리&lt;br /&gt;
** = 표준 라이브러리 I/O 객체의 종류와 구성 방식을 알아보자.&lt;br /&gt;
** = 표준 라이브러리 I/O 객체의 특징을 알아보자.&lt;br /&gt;
** #2. I/O와 조건 상태와 버퍼 관리&lt;br /&gt;
** = 스트림과 조건식과의 관계를 파악하자.&lt;br /&gt;
** = 스트림의 상태를 점검해보자!&lt;br /&gt;
** = 스트림을 서로 묶어서 버퍼를 관리해보자.&lt;br /&gt;
** #3. 파일 I/O&lt;br /&gt;
** = 파일 스트림 객체의 사용법을 다시 돌아보자.&lt;br /&gt;
** = 파일 스트림을 여는 여러가지 방식을 정리해보자.&lt;br /&gt;
** #4. 문자열 I/O&lt;br /&gt;
** = 문자열 스트림 객체의 사용법을 다시 돌아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 6. 순차 컨테이너&lt;br /&gt;
** #1. 순차 컨테이너 개관&lt;br /&gt;
** = 사용 가능한 순차 컨테이너의 종류를 알아보자.&lt;br /&gt;
** = 컨테이너의 공통적인 연산의 종류에 대해 알아보자.&lt;br /&gt;
** = 반복자 범위에 대해서 알아보자.&lt;br /&gt;
** #2. 순차 컨테이너 연산&lt;br /&gt;
** = 순차 컨테이너에 대한 assign과 swap 연산에 대해 알아보자.&lt;br /&gt;
** = 순차 컨테이너에 대한 요소 삽입/접근/삭제에 대해 알아보자.&lt;br /&gt;
** = 반복자 무효화에 대해 항상 조심하자.&lt;br /&gt;
** = vector/string에서의 capacity와 size를 구분하자.&lt;br /&gt;
** #3. Advanced String&lt;br /&gt;
** = string 객체를 생성하는 더 많은 방법을 알아보자.&lt;br /&gt;
** = string의 내용을 더 다양하게 조작해보자.&lt;br /&gt;
** = string 검색과 비교에 대해 알아보자.&lt;br /&gt;
** = string과 수치 변환에 대해 알아보자.&lt;br /&gt;
** #4. 컨테이너 어댑터&lt;br /&gt;
** = 컨테이너 어댑터의 공통적인 연산의 종류에 대해 알아보자.&lt;br /&gt;
** = 스택/큐 연산에 대해 알아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 7. 일반화 알고리즘&lt;br /&gt;
** #1. 일반화 알고리즘 개관&lt;br /&gt;
** = 알고리즘과 반복자, 알고리즘과 컨테이너 사이의 관계를 알아보자.&lt;br /&gt;
** #2. 일반화 알고리즘의 분류&lt;br /&gt;
** = 요소 읽기 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 요소 기록 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 요소 정렬 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 수많은 알고리즘을 이름에 따라 분류해보자.&lt;br /&gt;
** = 알고리즘들의 매개변수 패턴에 대해 알아보자.&lt;br /&gt;
** #3. 람다 표현식&lt;br /&gt;
** = 알고리즘과 술어 함수와의 관계를 알아보자.&lt;br /&gt;
** = 함수 호출성 객체, 펑터(Functor)에 대해 알아보자.&lt;br /&gt;
** = 람다 표현식의 형식을 살펴보자.&lt;br /&gt;
** = 일반적 람다에 대해 알아보자.&lt;br /&gt;
** = 갈무리 목록의 사용 형식들에 대해 알아보자.&lt;br /&gt;
** #4. 함수 바인딩&lt;br /&gt;
** = 함수 어댑터 역할을 하는 bind에 대해 알아보자.&lt;br /&gt;
** = 함수 바인딩에 쓰이는 Placeholder에 대해 알아보자.&lt;br /&gt;
** = 함수 바인딩에 유용한 functional 함수들을 알아두자.&lt;br /&gt;
** #5. 반복자&lt;br /&gt;
** = 특수한 반복자의 종류에 대해 알아보자.&lt;br /&gt;
** = 삽입 반복자, inserter 반복자에 대해 알아보자.&lt;br /&gt;
** = 스트림 반복자에 대해서 알아보자.&lt;br /&gt;
** = 역방향 반복자에 대해서 알아보자.&lt;br /&gt;
** = 반복자 범주와 알고리즘과의 관계를 알아보자.&lt;br /&gt;
** #6. 컨테이너 특수화 알고리즘&lt;br /&gt;
** = 리스트에 특화되어 있는 알고리즘 함수들을 살펴보자.&lt;br /&gt;
** #7. 이런저런 이야기&lt;br /&gt;
** = 람다 내에서 암묵적으로 갈무리하는 것을 피하자.&lt;br /&gt;
** = 함수 바인딩보다는 람다를 선호하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 8. 연관 컨테이너&lt;br /&gt;
** #1. 연관 컨테이너 개관&lt;br /&gt;
** = 연관 컨테이너의 종류에 대해 알아보자.&lt;br /&gt;
** = pair 객체에 대해 알아보자.&lt;br /&gt;
** = 연관 컨테이너의 키 타입 조건을 알아보자.&lt;br /&gt;
** #2. 연관 컨테이너 연산&lt;br /&gt;
** = 연관 컨테이너에 정의된 추가 타입 별칭들을 알아보자.&lt;br /&gt;
** = 연관 컨테이너와 반복자의 관계를 알아보자.&lt;br /&gt;
** = 연관 컨테이너와 알고리즘과의 관계를 알아보자.&lt;br /&gt;
** = 연관 컨테이너에 요소를 추가/삭제해보자.&lt;br /&gt;
** = 연관 컨테이너 요소에 접근해보자.&lt;br /&gt;
** #3. 순서 없는 컨테이너&lt;br /&gt;
** = 순서 없는 컨테이너가 요소를 저장하는 방법에 대해 알아보자.&lt;br /&gt;
** = 버킷을 관리하고 조회하는 함수들에 대해 알아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 9. 효율적이고 안전한 STL&lt;br /&gt;
** #1. 더 폭넓은 이해를 위해&lt;br /&gt;
** = STL 동작의 대부분은 결국 복사임을 파악하자.&lt;br /&gt;
** = string이 라이브러리마다 전부 똑같은 string은 아님을 이해하자.&lt;br /&gt;
** = bool에 대한 vector는 STL 요소가 아님을 파악하자.&lt;br /&gt;
** = 컨테이너 일반화 코드가 아닌, 캡슐화를 이용하자.&lt;br /&gt;
** = C와 vector/string의 호환성에 대해 알아보자.&lt;br /&gt;
** = STL 컨테이너와 Thread-Safety의 관계를 파악하자. (x)&lt;br /&gt;
** = 상등성과 동등성을 구분해서 생각하자. (x)&lt;br /&gt;
** #2. 더 빠른 코드를 위해&lt;br /&gt;
** = empty 멤버 함수는 괜히 있는 것이 아니다.&lt;br /&gt;
** = 요소보다는 범위에 초점을 맞추자. (x)&lt;br /&gt;
** = reserve로 잦은 메모리 할당을 피하자. (x)&lt;br /&gt;
** #3. 더 안전한 코드를 위해&lt;br /&gt;
** = 동적 배열보다는 컨테이너를 사용하자. (x)&lt;br /&gt;
** = 컨테이너 요소 삭제 시에는 항상 경계할 필요가 있다. (x)&lt;br /&gt;
** #4. 더 나은 최적화를 위해&lt;br /&gt;
** = 적합한 때에 적합한 컨테이너를 사용하자. (x)&lt;br /&gt;
** = shrink_to_fit 멤버 함수에 걸맞는 방법을 알아보자. (x)&lt;br /&gt;
&lt;br /&gt;
* Chapter 10. 동적 메모리 관리&lt;br /&gt;
** #1. 스마트 포인터&lt;br /&gt;
** = 스마트 포인터와 그 종류에 대해 알아보자.&lt;br /&gt;
** = shared_ptr, unique_ptr의 공통적 연산에 대해 알아보자.&lt;br /&gt;
** = shared_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** = unique_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** = weak_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** #2. 직접적인 객체 할당과 해제&lt;br /&gt;
** = new를 통해서 자유 공간에 객체를 동적으로 할당해보자.&lt;br /&gt;
** = delete를 통해서 동적으로 할당한 객체를 해제해보자.&lt;br /&gt;
** = 스마트 포인터 초기화에 new를 사용할 수 있는 방법을 알아보자.&lt;br /&gt;
** = 스마트 포인터와 일반적인 포인터의 논리를 섞어쓰지 말자.&lt;br /&gt;
** #3. 배열의 동적 할당과 해제&lt;br /&gt;
** = new를 통해서 배열을 동적으로 할당해보자.&lt;br /&gt;
** = delete를 통해서 배열을 할당 해제해보자.&lt;br /&gt;
** = 스마트 포인터로 배열을 동적으로 관리해보자.&lt;br /&gt;
** #4. 저수준 메모리 관리&lt;br /&gt;
** = 메모리 할당을 위한 allocator 클래스에 대해 알아보자.&lt;br /&gt;
** = 미초기화 메모리에 대한 객체 생성을 도와주는 알고리즘을 알아보자.&lt;br /&gt;
** #5. 이런저런 이야기&lt;br /&gt;
&lt;br /&gt;
* Chapter 11. 복사와 이동&lt;br /&gt;
* Chapter 12. 연산자 오버로딩&lt;br /&gt;
* Chapter 13. 객체 지향 프로그래밍과 C++&lt;br /&gt;
* Chapter 14. 템플릿&lt;br /&gt;
* Chapter 15. 예외 처리와 예외 안전성&lt;br /&gt;
&lt;br /&gt;
* 계속 작성 예정입니다.&lt;br /&gt;
&lt;br /&gt;
== 덧글 ==&lt;br /&gt;
* 얍 - [[성훈]]&lt;br /&gt;
** 얍! 얍! 얍! - [[박인서]]&lt;br /&gt;
-----------&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>209.58.130.196</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MFC%2B%2B&amp;diff=34375</id>
		<title>MFC++</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MFC%2B%2B&amp;diff=34375"/>
		<updated>2017-01-30T17:44:52Z</updated>

		<summary type="html">&lt;p&gt;209.58.130.196: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
* &#039;&#039;&#039;M&#039;&#039;&#039;astering &#039;&#039;&#039;F&#039;&#039;&#039;urther &#039;&#039;&#039;C++&#039;&#039;&#039;&lt;br /&gt;
** --Mxxxxx Fxxxxxx C++...--&lt;br /&gt;
&lt;br /&gt;
== 진행 ==&lt;br /&gt;
* 진행 방식은 과거 [[미시Cpp]]를 벤치마킹(?)해서 진행합니다.&lt;br /&gt;
** 즉, 주마다 특정 주제 내용을 소개하는 방식으로 진행됩니다.&lt;br /&gt;
* 진행 스타일은 과거 [[CS]] 스터디와 동일합니다.&lt;br /&gt;
** --템플릿도 그냥 복사해서...--&lt;br /&gt;
&lt;br /&gt;
* 2016년 2학기 시작 직후부터 시작합니다.&lt;br /&gt;
* 되도록이면 수요일 정모 직후, 7시에서 9시까지 진행합니다.&lt;br /&gt;
** 주마다 진행 요일이 불가피하게 바뀌어야 할 수도 있습니다.&lt;br /&gt;
&lt;br /&gt;
* 진행에 사용되는 소스 코드는 해당 레포지토리에 있습니다.&lt;br /&gt;
** [https://github.com/nErumin/MFCplusplusSource]&lt;br /&gt;
== 참가자 ==&lt;br /&gt;
* 기반 C++ 내용에 대해서는 거의 생략할 예정이므로, 대체적으로 이미 C++을 공부해본 경험이 있으신 편이 좋습니다.&lt;br /&gt;
* 참가하실 분은 아래 이름을 적어주세요!&lt;br /&gt;
* [[신형철]], [[박인서]], ~~프로 도강러~~[[성훈]]&lt;br /&gt;
== 목표 ==&lt;br /&gt;
* C++ 돌아보기 --돌아보는 척 하면서 더 낯설게 만들기--&lt;br /&gt;
* C++11과 C++14의 내용 숙지&lt;br /&gt;
* 흔한 C++ 프로그래밍 실수 방지하기&lt;br /&gt;
* C++에서의 동시성 활용하기&lt;br /&gt;
&lt;br /&gt;
== 참고 ==&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.lafejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788945072207&amp;amp;orderClick=LAG&amp;amp;Kc=|C++ Primer 5th Edition]&lt;br /&gt;
** 기본 바탕은 이 책을 기준으로 합니다.&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9791195444946&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956743998&amp;amp;orderClick=LAH&amp;amp;Kc=|More Effective C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788966261642&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective Modern C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956743110&amp;amp;orderClick=LAH&amp;amp;Kc=|Effective STL]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewEng.laf?ejkGb=BNT&amp;amp;mallGb=ENG&amp;amp;barcode=9781933988771&amp;amp;orderClick=LAG&amp;amp;Kc=|C++ Concurrency In Action]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788980545063&amp;amp;orderClick=LAG&amp;amp;Kc=|Exceptional C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788955507904&amp;amp;orderClick=LAG&amp;amp;Kc=|More Exceptional C++]&lt;br /&gt;
* [http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788956742618&amp;amp;orderClick=LAG&amp;amp;Kc=|Exceptional C++ Style]&lt;br /&gt;
* 그 외 위키피디아와 C++ 레퍼런스 사이트 등&lt;br /&gt;
&lt;br /&gt;
== 진행 내용 ==&lt;br /&gt;
* [[MFC++/9월7일]]&lt;br /&gt;
* [[MFC++/10월5일]]&lt;br /&gt;
* MFC++/11월2일&lt;br /&gt;
* MFC++/11월9일&lt;br /&gt;
* MFC++/11월30일&lt;br /&gt;
* MFC++/1월4일&lt;br /&gt;
* MFC++/1월11일&lt;br /&gt;
* MFC++/1월18일&lt;br /&gt;
&lt;br /&gt;
== 진행 예정 내용 ==&lt;br /&gt;
* Chapter 1. 변수와 타입&lt;br /&gt;
** #1. 산술 타입&lt;br /&gt;
** = 부동소수점 연산 시에는 정밀도 손실을 항상 경계하자.&lt;br /&gt;
** = (지나가는) long long의 숨겨진 이야기&lt;br /&gt;
** #2. 문자 타입&lt;br /&gt;
** = char, signed char, unsigned char를 구분하자.&lt;br /&gt;
** = 때로는 다양한 문자 표현들을 고려하자.&lt;br /&gt;
** = 필요하다면 이스케이프 시퀀스는 무시하자.&lt;br /&gt;
** #3. 내장 타입 간 형변환&lt;br /&gt;
** = 타입의 범위를 넘어가는 값 대입은 예상처럼 작동할 수도, 그렇지 않을 수도 있다.&lt;br /&gt;
** = 부호 있는 타입과 부호 없는 타입을 섞어쓰는 표현식은 항상 경계하자.&lt;br /&gt;
** #4. 상수&lt;br /&gt;
** = 다양한 상수 표기를 활용하자.&lt;br /&gt;
** #5. 초기화와 분리 컴파일&lt;br /&gt;
** = 초기화와 대입의 의미를 구분하자.&lt;br /&gt;
** = 기존의 초기화 방식과 목록 초기화 방식의 차이점을 숙지하자.&lt;br /&gt;
** = 변수의 선언과 정의를 구분하자.&lt;br /&gt;
** #6. 복합 타입&lt;br /&gt;
** = 참조자의 의미를 돌아보자.&lt;br /&gt;
** = 포인터의 의미를 돌아보자.&lt;br /&gt;
** = 복합 타입과 바탕 타입을 형식으로써 섞어 사용하지 말자.&lt;br /&gt;
** = 널 포인터를 표현하고 싶을 때 선택할 수 있는 것은 딱 하나뿐이다.&lt;br /&gt;
** = 참조자와 포인터를 구분해서 사용하자.&lt;br /&gt;
** #7. const와 constexpr&lt;br /&gt;
** = 초기화와 const의 관계를 파악하자.&lt;br /&gt;
** = const 변수를 여러 파일에서 공유하려 할 때는 주의하자.&lt;br /&gt;
** = 상위 const와 하위 const를 구분하자.&lt;br /&gt;
** = 적합하다면, constexpr을 항상 곁에 두자.&lt;br /&gt;
** #8. auto와 decltype&lt;br /&gt;
** = auto의 동작 원리를 파악하자.&lt;br /&gt;
** = decltype의 동작 원리를 파악하자.&lt;br /&gt;
** #9. 나머지 이야기&lt;br /&gt;
** = 타입 별칭을 사용할 때는 별칭 선언을 사용하자.&lt;br /&gt;
** = 상황에 따라서는 변수도 일반화해서 정의해보자.&lt;br /&gt;
** = (지나가는) 코드를 분석해보자.&lt;br /&gt;
** = (지나가는) 키워드는 왜 식별자로 사용이 불가능할까?&lt;br /&gt;
** = (지나가는) 내장 bool 타입은 꼭 필요한걸까?&lt;br /&gt;
** = (지나가는) C 라이브러리와 C++ 버전 라이브러리의 차이는 무엇일까?&lt;br /&gt;
&lt;br /&gt;
* Chapter 2. 문자열과 배열, 벡터&lt;br /&gt;
** #1. string&lt;br /&gt;
** = 유니코드에 맞는 string을 사용하자.&lt;br /&gt;
** = string 생성자 종류와 string 연산들의 종류를 대략적으로 알아두자.&lt;br /&gt;
** = 문자 제어에 도움이 되는 함수들을 알아두자.&lt;br /&gt;
** = string을 스트림을 통해 읽어들일 때, istream/getline 간 차이를 파악하자.&lt;br /&gt;
** = size_t, size_type 등의 typedef 타입들의 의미를 파악하자.&lt;br /&gt;
** = C-Style String은 가급적이면 사용하지 말자.&lt;br /&gt;
** #2. 배열&lt;br /&gt;
** = 포인터 타입과 배열 타입 간 형식 연역 차이를 파악하자.&lt;br /&gt;
** = 포인터를 배열에 대한 반복자로 생각하자.&lt;br /&gt;
** #3. 벡터&lt;br /&gt;
** = 벡터 생성자 종류와 벡터 연산들의 종류를 대략적으로 파악하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 3. 표현식과 문장, 함수&lt;br /&gt;
** #1. 변환과 캐스팅&lt;br /&gt;
** = (지나가는) 산술 타입 간 암시적 변환과 정수 승격 기준을 알아보자.&lt;br /&gt;
** = C++ 스타일의 캐스팅을 사용하자.&lt;br /&gt;
** #2. 함수&lt;br /&gt;
** = 자동 객체와 지역 static 객체를 돌아보자.&lt;br /&gt;
** = const와 함수 매개변수의 관계에 조심하자.&lt;br /&gt;
** = 배열 매개변수를 선언하는 다양한 방법을 파악하자.&lt;br /&gt;
** = initializer_list를 사용해서 가변 매개변수를 흉내내보자.&lt;br /&gt;
** = (지나가는) 함수에서 배열 타입을 반환해보자.&lt;br /&gt;
** = 후행 반환 타입을 통해 함수를 정의해보자.&lt;br /&gt;
** = 반환 타입 유추가 필요할 땐 auto를 사용하자.&lt;br /&gt;
** = const_cast가 함수 속에서 유용하게 쓰이는 경우를 알아두자.&lt;br /&gt;
** = 매개변수에 기본 값이 필요하다면 기본 인자를 선언해보자.&lt;br /&gt;
** = inline 지정은 만능이 아님을 알아두자.&lt;br /&gt;
** = 함수 일치 과정을 파악하자.&lt;br /&gt;
** = 함수가 예외를 던지지 않는다면 noexcept로 선언하자.&lt;br /&gt;
** = 예외 명세는 가급적 사용하지 말자.&lt;br /&gt;
** #3. 이런저런 이야기&lt;br /&gt;
** = switch 레이블에서 초기화 우회를 조심하자.&lt;br /&gt;
** = 피연산자 평가 순서에 조심하자.&lt;br /&gt;
** = sizeof 연산자를 돌아보자.&lt;br /&gt;
** = 디버깅에 도움이 되는 도구들을 알아두자.&lt;br /&gt;
** = 가급적이면 auto를 선호하자.&lt;br /&gt;
** = auto 형식 추론이 예상치 않은 타입일 경우 캐스팅을 활용하자.&lt;br /&gt;
** = 매크로보다는 상수나 inline이 낫다.&lt;br /&gt;
** = (지나가는) 캐스팅 퀴즈&lt;br /&gt;
&lt;br /&gt;
* Chapter 4. 클래스 Basic&lt;br /&gt;
** #1. 멤버 함수&lt;br /&gt;
** = this의 정체를 파악하자.&lt;br /&gt;
** = const 멤버 함수의 배경과 this의 관계를 알아두자.&lt;br /&gt;
** = 멤버 함수 정의와 inline과의 관계를 파악하자.&lt;br /&gt;
** = 클래스는 새로운 유효 범위를 형성한다.&lt;br /&gt;
** = 클래스에 대해 컴파일러가 이름 검색을 하는 과정을 알아두자.&lt;br /&gt;
** = 멤버 함수에 대해 컴파일러가 이름 검색을 하는 과정을 알아두자. &lt;br /&gt;
** #2. 생성자&lt;br /&gt;
** = 생성자와 const 객체의 관계를 파악하자.&lt;br /&gt;
** = 명시적으로 합성 멤버를 원한다면 default를 명시하자.&lt;br /&gt;
** = 멤버 변수의 초기화 값이 선택되는 순서를 알아두자.&lt;br /&gt;
** = 생성자 초기화 리스트 내에서 멤버의 초기화 순서에 주의하자.&lt;br /&gt;
** = 위임 생성자를 활용하자.&lt;br /&gt;
** = 생성자 선언 시에는 변환 생성자에 항상 주의해야 한다.&lt;br /&gt;
** #3. 다양한 클래스들&lt;br /&gt;
** = 집합 클래스에 대해 알아보자.&lt;br /&gt;
** = 상수 클래스에 대해 알아보자.&lt;br /&gt;
** #4. 클래스와 정적 멤버&lt;br /&gt;
** = 정적 멤버의 선언과 정의, 사용 방법을 알아두자.&lt;br /&gt;
** #5. 프렌드&lt;br /&gt;
** = 클래스 간의 프렌드 관계를 파악하자.&lt;br /&gt;
** = 프렌드 선언과 함수와의 관계를 파악하자.&lt;br /&gt;
** = friend 선언과 일반적인 선언은 차이가 있음을 알아두자.&lt;br /&gt;
** #5. 이런저런 이야기&lt;br /&gt;
** = 클래스 멤버의 mutable 속성에 대해서 알아두자.&lt;br /&gt;
** = const 멤버 함수가 상수성을 반드시 보장하지 않음을 명심하자.&lt;br /&gt;
** = 형식 정의 시 class와 struct 키워드의 차이를 알아두자.&lt;br /&gt;
** = 기본 생성자의 존재 여부는 가볍게 볼 것이 아니다.&lt;br /&gt;
** = 물리적인 const와 논리적인 const를 구별하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 5. I/O와 C++&lt;br /&gt;
** #1. 라이브러리&lt;br /&gt;
** = 표준 라이브러리 I/O 객체의 종류와 구성 방식을 알아보자.&lt;br /&gt;
** = 표준 라이브러리 I/O 객체의 특징을 알아보자.&lt;br /&gt;
** #2. I/O와 조건 상태와 버퍼 관리&lt;br /&gt;
** = 스트림과 조건식과의 관계를 파악하자.&lt;br /&gt;
** = 스트림의 상태를 점검해보자!&lt;br /&gt;
** = 스트림을 서로 묶어서 버퍼를 관리해보자.&lt;br /&gt;
** #3. 파일 I/O&lt;br /&gt;
** = 파일 스트림 객체의 사용법을 다시 돌아보자.&lt;br /&gt;
** = 파일 스트림을 여는 여러가지 방식을 정리해보자.&lt;br /&gt;
** #4. 문자열 I/O&lt;br /&gt;
** = 문자열 스트림 객체의 사용법을 다시 돌아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 6. 순차 컨테이너&lt;br /&gt;
** #1. 순차 컨테이너 개관&lt;br /&gt;
** = 사용 가능한 순차 컨테이너의 종류를 알아보자.&lt;br /&gt;
** = 컨테이너의 공통적인 연산의 종류에 대해 알아보자.&lt;br /&gt;
** = 반복자 범위에 대해서 알아보자.&lt;br /&gt;
** #2. 순차 컨테이너 연산&lt;br /&gt;
** = 순차 컨테이너에 대한 assign과 swap 연산에 대해 알아보자.&lt;br /&gt;
** = 순차 컨테이너에 대한 요소 삽입/접근/삭제에 대해 알아보자.&lt;br /&gt;
** = 반복자 무효화에 대해 항상 조심하자.&lt;br /&gt;
** = vector/string에서의 capacity와 size를 구분하자.&lt;br /&gt;
** #3. Advanced String&lt;br /&gt;
** = string 객체를 생성하는 더 많은 방법을 알아보자.&lt;br /&gt;
** = string의 내용을 더 다양하게 조작해보자.&lt;br /&gt;
** = string 검색과 비교에 대해 알아보자.&lt;br /&gt;
** = string과 수치 변환에 대해 알아보자.&lt;br /&gt;
** #4. 컨테이너 어댑터&lt;br /&gt;
** = 컨테이너 어댑터의 공통적인 연산의 종류에 대해 알아보자.&lt;br /&gt;
** = 스택/큐 연산에 대해 알아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 7. 일반화 알고리즘&lt;br /&gt;
** #1. 일반화 알고리즘 개관&lt;br /&gt;
** = 알고리즘과 반복자, 알고리즘과 컨테이너 사이의 관계를 알아보자.&lt;br /&gt;
** #2. 일반화 알고리즘의 분류&lt;br /&gt;
** = 요소 읽기 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 요소 기록 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 요소 정렬 알고리즘에 대해 알아보자.&lt;br /&gt;
** = 수많은 알고리즘을 이름에 따라 분류해보자.&lt;br /&gt;
** = 알고리즘들의 매개변수 패턴에 대해 알아보자.&lt;br /&gt;
** #3. 람다 표현식&lt;br /&gt;
** = 알고리즘과 술어 함수와의 관계를 알아보자.&lt;br /&gt;
** = 함수 호출성 객체, 펑터(Functor)에 대해 알아보자.&lt;br /&gt;
** = 람다 표현식의 형식을 살펴보자.&lt;br /&gt;
** = 일반적 람다에 대해 알아보자.&lt;br /&gt;
** = 갈무리 목록의 사용 형식들에 대해 알아보자.&lt;br /&gt;
** #4. 함수 바인딩&lt;br /&gt;
** = 함수 어댑터 역할을 하는 bind에 대해 알아보자.&lt;br /&gt;
** = 함수 바인딩에 쓰이는 Placeholder에 대해 알아보자.&lt;br /&gt;
** = 함수 바인딩에 유용한 functional 함수들을 알아두자.&lt;br /&gt;
** #5. 반복자&lt;br /&gt;
** = 특수한 반복자의 종류에 대해 알아보자.&lt;br /&gt;
** = 삽입 반복자, inserter 반복자에 대해 알아보자.&lt;br /&gt;
** = 스트림 반복자에 대해서 알아보자.&lt;br /&gt;
** = 역방향 반복자에 대해서 알아보자.&lt;br /&gt;
** = 반복자 범주와 알고리즘과의 관계를 알아보자.&lt;br /&gt;
** #6. 컨테이너 특수화 알고리즘&lt;br /&gt;
** = 리스트에 특화되어 있는 알고리즘 함수들을 살펴보자.&lt;br /&gt;
** #7. 이런저런 이야기&lt;br /&gt;
** = 람다 내에서 암묵적으로 갈무리하는 것을 피하자.&lt;br /&gt;
** = 함수 바인딩보다는 람다를 선호하자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 8. 연관 컨테이너&lt;br /&gt;
** #1. 연관 컨테이너 개관&lt;br /&gt;
** = 연관 컨테이너의 종류에 대해 알아보자.&lt;br /&gt;
** = pair 객체에 대해 알아보자.&lt;br /&gt;
** = 연관 컨테이너의 키 타입 조건을 알아보자.&lt;br /&gt;
** #2. 연관 컨테이너 연산&lt;br /&gt;
** = 연관 컨테이너에 정의된 추가 타입 별칭들을 알아보자.&lt;br /&gt;
** = 연관 컨테이너와 반복자의 관계를 알아보자.&lt;br /&gt;
** = 연관 컨테이너와 알고리즘과의 관계를 알아보자.&lt;br /&gt;
** = 연관 컨테이너에 요소를 추가/삭제해보자.&lt;br /&gt;
** = 연관 컨테이너 요소에 접근해보자.&lt;br /&gt;
** #3. 순서 없는 컨테이너&lt;br /&gt;
** = 순서 없는 컨테이너가 요소를 저장하는 방법에 대해 알아보자.&lt;br /&gt;
** = 버킷을 관리하고 조회하는 함수들에 대해 알아보자.&lt;br /&gt;
&lt;br /&gt;
* Chapter 9. 효율적이고 안전한 STL&lt;br /&gt;
** #1. 더 폭넓은 이해를 위해&lt;br /&gt;
** = STL 동작의 대부분은 결국 복사임을 파악하자.&lt;br /&gt;
** = string이 라이브러리마다 전부 똑같은 string은 아님을 이해하자.&lt;br /&gt;
** = bool에 대한 vector는 STL 요소가 아님을 파악하자.&lt;br /&gt;
** = 컨테이너 일반화 코드가 아닌, 캡슐화를 이용하자.&lt;br /&gt;
** = C와 vector/string의 호환성에 대해 알아보자.&lt;br /&gt;
** = STL 컨테이너와 Thread-Safety의 관계를 파악하자. (x)&lt;br /&gt;
** = 상등성과 동등성을 구분해서 생각하자. (x)&lt;br /&gt;
** #2. 더 빠른 코드를 위해&lt;br /&gt;
** = empty 멤버 함수는 괜히 있는 것이 아니다.&lt;br /&gt;
** = 요소보다는 범위에 초점을 맞추자. (x)&lt;br /&gt;
** = reserve로 잦은 메모리 할당을 피하자. (x)&lt;br /&gt;
** #3. 더 안전한 코드를 위해&lt;br /&gt;
** = 동적 배열보다는 컨테이너를 사용하자. (x)&lt;br /&gt;
** = 컨테이너 요소 삭제 시에는 항상 경계할 필요가 있다. (x)&lt;br /&gt;
** #4. 더 나은 최적화를 위해&lt;br /&gt;
** = 적합한 때에 적합한 컨테이너를 사용하자. (x)&lt;br /&gt;
** = shrink_to_fit 멤버 함수에 걸맞는 방법을 알아보자. (x)&lt;br /&gt;
&lt;br /&gt;
* Chapter 10. 동적 메모리 관리&lt;br /&gt;
** #1. 스마트 포인터&lt;br /&gt;
** = 스마트 포인터와 그 종류에 대해 알아보자.&lt;br /&gt;
** = shared_ptr, unique_ptr의 공통적 연산에 대해 알아보자.&lt;br /&gt;
** = shared_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** = unique_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** = weak_ptr의 연산에 대해 알아보자.&lt;br /&gt;
** #2. 직접적인 객체 할당과 해제&lt;br /&gt;
** = new를 통해서 자유 공간에 객체를 동적으로 할당해보자.&lt;br /&gt;
** = delete를 통해서 동적으로 할당한 객체를 해제해보자.&lt;br /&gt;
** = 스마트 포인터 초기화에 new를 사용할 수 있는 방법을 알아보자.&lt;br /&gt;
** = 스마트 포인터와 일반적인 포인터의 논리를 섞어쓰지 말자.&lt;br /&gt;
** #3. 동적 배열의 할당과 해제&lt;br /&gt;
** = &lt;br /&gt;
** #4. 저수준 메모리 관리&lt;br /&gt;
** = 메모리 할당을 위한 allocator 클래스에 대해 알아보자.&lt;br /&gt;
** = 미초기화 메모리에 대한 객체 생성을 도와주는 알고리즘을 알아보자.&lt;br /&gt;
** #5. 이런저런 이야기&lt;br /&gt;
&lt;br /&gt;
* Chapter 11. 복사와 이동&lt;br /&gt;
* Chapter 12. 연산자 오버로딩&lt;br /&gt;
* Chapter 13. 객체 지향 프로그래밍과 C++&lt;br /&gt;
* Chapter 14. 템플릿&lt;br /&gt;
* Chapter 15. 예외 처리와 예외 안전성&lt;br /&gt;
&lt;br /&gt;
* 계속 작성 예정입니다.&lt;br /&gt;
&lt;br /&gt;
== 덧글 ==&lt;br /&gt;
* 얍 - [[성훈]]&lt;br /&gt;
** 얍! 얍! 얍! - [[박인서]]&lt;br /&gt;
-----------&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>209.58.130.196</name></author>
	</entry>
</feed>