SlideShare une entreprise Scribd logo
1  sur  32
Visual studio 2010C++0x 추가된 기능 소개 2010.05.29 데브루키스터디(http://cafe.naver.com/devrookie) 박민근
C++0x에 대해서
C++0x의 하위 호환성 C++의 표준 준수 기존의 코드와 완벽한 호환성 VC 7,8,9코드라면 VC10에서 호환
VC++ 9 vs VC++ 10 TR1과 달리 C++ 코어 기능 추가 C++ 언어 표현력 증대 성능적인 측면에서도 개선
auto
정적 언어와 동적 언어의 차이 < 코드 2-1. C/C++에서의 지역 변수 정의 > <코드> void BuyItem() { int Money = 500; ........ } </코드> < 코드 2-2. Ruby에서의 지역 변수 정의 > <코드> def BuyItem Money = 500; ...... end </코드>
C#의 var < 코드 2-3. LINQ에서 var를 사용할 때와 사용하지 않을 때 비교> <코드> // LINQ에서 var를 사용하지 않는 경우 IEnumerable<IGrouping<string, Student>> studentQuery3 = from student in students group student by student.Last; // LINQ에서 var를 사용한 경우 var studentQuery3 = from student in students group student by student.Last; </코드>
STL 컨테이너의 불편한 점 < 코드 2-4. C++에서 list 사용 > <코드> list<int> NumList; NumList.push_back( 10 ); for( list<int>::iteratoriter = NumList.begin(); iter != NumList.end(); ++iter ) { …… } </코드>
auto 컴파일때 변수의 타입을 정한다. 변수를 정의할 때 명시적으로 TYPE을 지정하지 않고, 컴파일 타임때 결정
지역 변수에 사용 < 코드 2-5. 문자열과 정수 변수에 auto 사용 > #include <iostream> using namespace std; int main() { // char* autoNPCName = "BugKing"; cout << NPCName << endl; // int auto Number = 1; cout << Number << endl; getchar(); return 0; }
포인터, 참고, const에 사용 < 코드 2-6. 포인터, 참조, const에 사용 > #include <iostream> using namespace std; int main() { intUserMode = 4; auto* pUserMode = &UserMode; cout << "pUserMode : Value - " << *pUserMode << ", address : " << pUserMode << endl; auto& refUserMode = UserMode; refUserMode = 5; cout << "UserMode : Value - " << UserMode << " | refUserMode : Value - " << refUserMode << endl; getchar(); return 0; }
클래스 정의에 사용 < 코드 2-7. 클래스 생성 때 auto 사용 > <코드> structCharacterInvenInfo { intSlotNum; intItemCode; }; ........ auto* CharInven = new CharacterInvenInfo(); ........ </코드>
STL에서 사용 typedefstd::list<MCommand*> LIST_COMMAND; LIST_COMMAND::iteratoriter = m_listCommand.begin(); auto iter = m_listCommand.begin();
Vector 순회시에 사용 for( autoIterPos = ItemCodeList.begin(); IterPos != ItemCodeList.end(); ++IterPos) { cout << "ItemCode : " << *IterPos << endl; }
핵심 요약 auto를 사용하면 1. 지역 변수를 정의 때 명시적으로 type을 지정하지 않아도 됨 2. 컴파일 타임 때 type을 결정 3. 코딩이 간편해지고, 코드 가독성이 좋아짐
static_assert
기존 assert의 한계 프로그램이 실행될때 평가된다.  -> 컴파일 타임때 발견할 수 있는것들은 미리 발견하면 더욱 좋지 않을까? -> 컴파일 타임에서 실체화할 템플릿의 전제 조건을 조사할때
Static_assert 원형 static_assert “( constant-expression”,“ error-message'') ; 파라미터 “constant-expression”- 검사할 조건 식 “error-message”- 조건이 false일 경우 출력할 error 메시지 결과 constant-expression가 false일 경우 컴파일러는 에러 메시지를 출력합니다. static_assert는 다음과 같은 경우에 사용하면 유용합니다. 기본 타입(int, long 등)이나 유저 정의 타입(class, struct등으로 만든 타입)의 크기를 확인하고 싶을 때 어떤 타입의 최대 크기를 넘어서는지 확인하고 싶을 때
프리프로세스 지시어 대체 < 코드 3-2. 상수 값의 크기 조사 > #include <iostream> using namespace std; const int MAX_LEVEL = 120; int main() { static_assert( MAX_LEVEL <= 100, "Warring - MAX_LEVEL" ); return 0; }
템플릿에서 사용 < 코드 3-3. Stack 클래스 템플릿의 최소 스택 크기 조사 > template< typename T1, intStackSize > class MYSTACK { static_assert( StackSize >= 10, "Stack Size Error" ); public : MYSTACK() : data( new T[StackSize] ) { } private: T1* data; }; int main() { MYSTACK< int, 5 > MyStack; return 0; }
변수의 크기 조사 < 코드 3-4. int타입의 크기 조사 > #include <iostream> using namespace std; int main() { static_assert( sizeof(int) == 4, "not int size 4" ); return 0; }
핵심 요약 1. assert와 비슷한 조건 조사를 할 수 있음 2. 컴파일 타임 때 사용하여 프로그램 실행 전에 문제를 찾을 수 있음 3. 템플릿 프로그래밍에 사용하면 특히 유용
nullptr
Nullptr이 필요한 이유 C++03까지는 널 포인터를 나타내기 위해서는 NULL 매크로나 상수 0을 사용 그러나 NULL 매크로나 상수 0을 사용하여 함수에 인자로 넘기는 경우 int타입으로 추론되는 문제가 있다.
void func( int a ) { cout << "func - int " << endl; } void func( double *p ) { cout << "func - double * " << endl; } int main() { func( static_cast<double*>(0) ); func( 0 ); func( NULL ); getchar(); return 0; }
Nullptr사용 방법 사용방법은 너무 너무 간단합니다. ^^ 그냥 예전에 널 포인터로 0이나 NULL을 사용하던 것을 그대로 대처하면 됩니다. <코드> char* p = nullptr; </코드> <코드 7-1>에서 널 포인트를 파라미터로 넘겨서 func( double* p )가 호출하게 하기 위해서는 <코드> func( nullptr ); </코드> 로 호출하면 됩니다.
올바른 사용예, 잘못된 사용예 올바른 사용 char* ch = nullptr; // ch에 널 포인터 대입. sizeof( nullptr ); // 사용 할 수 있습니다. 참고로 크기는 4 입니다. typeid( nullptr ); // 사용할 수 있습니다. throw nullptr; // 사용할 수 있습니다. 틀린 사용 intn = nullptr; // int에는 숫자만 대입가능한데 nullptr은 클래스이므로 안됩니다. Int n2 = 0 if( n2 == nullptr ); // 에러 if( nullptr ); // 에러 if( nullptr == 0 ); // 에러 nullptr = 0; // 에러 nullptr + 2; // 에러
decltype
decltype Auto와 같이 타입을 결정 함수의 반환값으로 타입 결정 가능 변수들의 계산 결과로 타입 결정 가능
Decltype사용하기 < 코드 6-1. decltype사용 예 > intHp; decltype(Hp) NPCHp = 5; decltype(Hp + NPCHp) TotalHp; decltype(Hp*) pHp = &Hp; < 코드 6-2. 함수의 반환 타입으로 decltype사용 > intfoo(); decltype(foo()) value;
우측값 참조
람다(lambda)

Contenu connexe

Tendances

[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...Seok-joon Yun
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리ssuser7c5a40
 
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...Seok-joon Yun
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...Seok-joon Yun
 
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준Seok-joon Yun
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
 
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23Seok-joon Yun
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features SummaryChris Ohk
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론Huey Park
 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Seok-joon Yun
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발흥배 최
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부Gwangwhi Mah
 
[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26Seok-joon Yun
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기Jongwook Choi
 
[C++ korea] effective modern c++ study item 17 19 신촌 study
[C++ korea] effective modern c++ study item 17 19 신촌 study[C++ korea] effective modern c++ study item 17 19 신촌 study
[C++ korea] effective modern c++ study item 17 19 신촌 studySeok-joon Yun
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)Sang Don Kim
 

Tendances (20)

[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
[C++ korea] Effective Modern C++ study item 19 use shared ptr for shared owne...
 
Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리Refelction의 개념과 RTTR 라이브러리
Refelction의 개념과 RTTR 라이브러리
 
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
[C++ Korea] Effective Modern C++ mva item 7 distinguish between and {} when c...
 
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
[C++ korea] effective modern c++ study item 14 declare functions noexcept if ...
 
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
[C++ Korea] Effective Modern C++ MVA item 8 Prefer nullptr to 0 and null +윤석준
 
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌[C++ Korea] Effective Modern C++ Study item14 16 +신촌
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
[C++ korea] Effective Modern C++ 신촌 Study Item20,21,23
 
C++20 Key Features Summary
C++20 Key Features SummaryC++20 Key Features Summary
C++20 Key Features Summary
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
 
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
 
C++11
C++11C++11
C++11
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26[C++ Korea] Effective Modern C++ Study item 24-26
[C++ Korea] Effective Modern C++ Study item 24-26
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 
C++11
C++11C++11
C++11
 
[C++ korea] effective modern c++ study item 17 19 신촌 study
[C++ korea] effective modern c++ study item 17 19 신촌 study[C++ korea] effective modern c++ study item 17 19 신촌 study
[C++ korea] effective modern c++ study item 17 19 신촌 study
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 

Similaire à Visual studio 2010

불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택JinTaek Seo
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7sung ki choi
 
공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coinknight1128
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinDong Chan Shin
 
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?NAVER D2
 
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서tcaesvk
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
 
객체지향 정리. Part1
객체지향 정리. Part1객체지향 정리. Part1
객체지향 정리. Part1kim HYUNG JIN
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crowJaeseung Ha
 
모던 C++ 정리
모던 C++ 정리모던 C++ 정리
모던 C++ 정리Hansol Kang
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10Ryan Park
 
Android+init+process
Android+init+processAndroid+init+process
Android+init+processHong Jae Kwon
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스Sungik Kim
 

Similaire à Visual studio 2010 (20)

불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택Boost라이브러리의내부구조 20151111 서진택
Boost라이브러리의내부구조 20151111 서진택
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7100828 [visual studio camp #1] C++0x와 Windows7
100828 [visual studio camp #1] C++0x와 Windows7
 
공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin
 
More effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshinMore effective c++ chapter1 2_dcshin
More effective c++ chapter1 2_dcshin
 
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?
 
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
NDC 2011, 네트워크 비동기 통신, 합의점의 길목에서
 
HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
 
객체지향 정리. Part1
객체지향 정리. Part1객체지향 정리. Part1
객체지향 정리. Part1
 
Changes in c++0x
Changes in c++0xChanges in c++0x
Changes in c++0x
 
20150212 c++11 features used in crow
20150212 c++11 features used in crow20150212 c++11 features used in crow
20150212 c++11 features used in crow
 
모던 C++ 정리
모던 C++ 정리모던 C++ 정리
모던 C++ 정리
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
온라인 게임에서 사례로 살펴보는 디버깅 in NDC10
 
Android+init+process
Android+init+processAndroid+init+process
Android+init+process
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 

Plus de MinGeun Park

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdfMinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2MinGeun Park
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석MinGeun Park
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이MinGeun Park
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐MinGeun Park
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBRMinGeun Park
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OTMinGeun Park
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.MinGeun Park
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correctionMinGeun Park
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & TrickMinGeun Park
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)MinGeun Park
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 MinGeun Park
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현MinGeun Park
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기MinGeun Park
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기MinGeun Park
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개MinGeun Park
 

Plus de MinGeun Park (20)

[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
[CSStudy] 코딩인터뷰 완전 분석 #7.pdf
 
[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6[Cs study] 코딩인터뷰 완전 분석 #6
[Cs study] 코딩인터뷰 완전 분석 #6
 
[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5[Cs study] 코딩인터뷰 완전 분석 #5
[Cs study] 코딩인터뷰 완전 분석 #5
 
[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3[Cs study] 코딩인터뷰 완전 분석 #3
[Cs study] 코딩인터뷰 완전 분석 #3
 
[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2[Cs study] 코딩인터뷰 완전 분석 #2
[Cs study] 코딩인터뷰 완전 분석 #2
 
[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석[Cs study] 코딩인터뷰 완전 분석
[Cs study] 코딩인터뷰 완전 분석
 
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이[데브루키_언리얼스터디_0525] 애니메이션 노티파이
[데브루키_언리얼스터디_0525] 애니메이션 노티파이
 
[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐[데브루키] 이벤트 드리븐 아키텍쳐
[데브루키] 이벤트 드리븐 아키텍쳐
 
[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR[데브루키 언리얼 스터디] PBR
[데브루키 언리얼 스터디] PBR
 
[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT[데브루키 언리얼 스터디] 스터디 안내 OT
[데브루키 언리얼 스터디] 스터디 안내 OT
 
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
[데브루키/페차쿠차] 유니티 프로파일링에 대해서 알아보자.
 
[데브루키] Color space gamma correction
[데브루키] Color space gamma correction[데브루키] Color space gamma correction
[데브루키] Color space gamma correction
 
유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick유니티 팁&트릭 Unity Tip & Trick
유니티 팁&트릭 Unity Tip & Trick
 
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
Live2D with Unity - 그녀들을 움직이게 하는 기술 (알콜코더 박민근)
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용 [Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
[Unite17] 유니티에서차세대프로그래밍을 UniRx 소개 및 활용
 
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
유니티의 툰셰이딩을 사용한 3D 애니메이션 표현
 
[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기[데브루키160409 박민근] UniRx 시작하기
[데브루키160409 박민근] UniRx 시작하기
 
[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기[160404] 유니티 apk 용량 줄이기
[160404] 유니티 apk 용량 줄이기
 
[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개[160402_데브루키_박민근] UniRx 소개
[160402_데브루키_박민근] UniRx 소개
 

Visual studio 2010

  • 1. Visual studio 2010C++0x 추가된 기능 소개 2010.05.29 데브루키스터디(http://cafe.naver.com/devrookie) 박민근
  • 3. C++0x의 하위 호환성 C++의 표준 준수 기존의 코드와 완벽한 호환성 VC 7,8,9코드라면 VC10에서 호환
  • 4. VC++ 9 vs VC++ 10 TR1과 달리 C++ 코어 기능 추가 C++ 언어 표현력 증대 성능적인 측면에서도 개선
  • 6. 정적 언어와 동적 언어의 차이 < 코드 2-1. C/C++에서의 지역 변수 정의 > <코드> void BuyItem() { int Money = 500; ........ } </코드> < 코드 2-2. Ruby에서의 지역 변수 정의 > <코드> def BuyItem Money = 500; ...... end </코드>
  • 7. C#의 var < 코드 2-3. LINQ에서 var를 사용할 때와 사용하지 않을 때 비교> <코드> // LINQ에서 var를 사용하지 않는 경우 IEnumerable<IGrouping<string, Student>> studentQuery3 = from student in students group student by student.Last; // LINQ에서 var를 사용한 경우 var studentQuery3 = from student in students group student by student.Last; </코드>
  • 8. STL 컨테이너의 불편한 점 < 코드 2-4. C++에서 list 사용 > <코드> list<int> NumList; NumList.push_back( 10 ); for( list<int>::iteratoriter = NumList.begin(); iter != NumList.end(); ++iter ) { …… } </코드>
  • 9. auto 컴파일때 변수의 타입을 정한다. 변수를 정의할 때 명시적으로 TYPE을 지정하지 않고, 컴파일 타임때 결정
  • 10. 지역 변수에 사용 < 코드 2-5. 문자열과 정수 변수에 auto 사용 > #include <iostream> using namespace std; int main() { // char* autoNPCName = "BugKing"; cout << NPCName << endl; // int auto Number = 1; cout << Number << endl; getchar(); return 0; }
  • 11. 포인터, 참고, const에 사용 < 코드 2-6. 포인터, 참조, const에 사용 > #include <iostream> using namespace std; int main() { intUserMode = 4; auto* pUserMode = &UserMode; cout << "pUserMode : Value - " << *pUserMode << ", address : " << pUserMode << endl; auto& refUserMode = UserMode; refUserMode = 5; cout << "UserMode : Value - " << UserMode << " | refUserMode : Value - " << refUserMode << endl; getchar(); return 0; }
  • 12. 클래스 정의에 사용 < 코드 2-7. 클래스 생성 때 auto 사용 > <코드> structCharacterInvenInfo { intSlotNum; intItemCode; }; ........ auto* CharInven = new CharacterInvenInfo(); ........ </코드>
  • 13. STL에서 사용 typedefstd::list<MCommand*> LIST_COMMAND; LIST_COMMAND::iteratoriter = m_listCommand.begin(); auto iter = m_listCommand.begin();
  • 14. Vector 순회시에 사용 for( autoIterPos = ItemCodeList.begin(); IterPos != ItemCodeList.end(); ++IterPos) { cout << "ItemCode : " << *IterPos << endl; }
  • 15. 핵심 요약 auto를 사용하면 1. 지역 변수를 정의 때 명시적으로 type을 지정하지 않아도 됨 2. 컴파일 타임 때 type을 결정 3. 코딩이 간편해지고, 코드 가독성이 좋아짐
  • 17. 기존 assert의 한계 프로그램이 실행될때 평가된다. -> 컴파일 타임때 발견할 수 있는것들은 미리 발견하면 더욱 좋지 않을까? -> 컴파일 타임에서 실체화할 템플릿의 전제 조건을 조사할때
  • 18. Static_assert 원형 static_assert “( constant-expression”,“ error-message'') ; 파라미터 “constant-expression”- 검사할 조건 식 “error-message”- 조건이 false일 경우 출력할 error 메시지 결과 constant-expression가 false일 경우 컴파일러는 에러 메시지를 출력합니다. static_assert는 다음과 같은 경우에 사용하면 유용합니다. 기본 타입(int, long 등)이나 유저 정의 타입(class, struct등으로 만든 타입)의 크기를 확인하고 싶을 때 어떤 타입의 최대 크기를 넘어서는지 확인하고 싶을 때
  • 19. 프리프로세스 지시어 대체 < 코드 3-2. 상수 값의 크기 조사 > #include <iostream> using namespace std; const int MAX_LEVEL = 120; int main() { static_assert( MAX_LEVEL <= 100, "Warring - MAX_LEVEL" ); return 0; }
  • 20. 템플릿에서 사용 < 코드 3-3. Stack 클래스 템플릿의 최소 스택 크기 조사 > template< typename T1, intStackSize > class MYSTACK { static_assert( StackSize >= 10, "Stack Size Error" ); public : MYSTACK() : data( new T[StackSize] ) { } private: T1* data; }; int main() { MYSTACK< int, 5 > MyStack; return 0; }
  • 21. 변수의 크기 조사 < 코드 3-4. int타입의 크기 조사 > #include <iostream> using namespace std; int main() { static_assert( sizeof(int) == 4, "not int size 4" ); return 0; }
  • 22. 핵심 요약 1. assert와 비슷한 조건 조사를 할 수 있음 2. 컴파일 타임 때 사용하여 프로그램 실행 전에 문제를 찾을 수 있음 3. 템플릿 프로그래밍에 사용하면 특히 유용
  • 24. Nullptr이 필요한 이유 C++03까지는 널 포인터를 나타내기 위해서는 NULL 매크로나 상수 0을 사용 그러나 NULL 매크로나 상수 0을 사용하여 함수에 인자로 넘기는 경우 int타입으로 추론되는 문제가 있다.
  • 25. void func( int a ) { cout << "func - int " << endl; } void func( double *p ) { cout << "func - double * " << endl; } int main() { func( static_cast<double*>(0) ); func( 0 ); func( NULL ); getchar(); return 0; }
  • 26. Nullptr사용 방법 사용방법은 너무 너무 간단합니다. ^^ 그냥 예전에 널 포인터로 0이나 NULL을 사용하던 것을 그대로 대처하면 됩니다. <코드> char* p = nullptr; </코드> <코드 7-1>에서 널 포인트를 파라미터로 넘겨서 func( double* p )가 호출하게 하기 위해서는 <코드> func( nullptr ); </코드> 로 호출하면 됩니다.
  • 27. 올바른 사용예, 잘못된 사용예 올바른 사용 char* ch = nullptr; // ch에 널 포인터 대입. sizeof( nullptr ); // 사용 할 수 있습니다. 참고로 크기는 4 입니다. typeid( nullptr ); // 사용할 수 있습니다. throw nullptr; // 사용할 수 있습니다. 틀린 사용 intn = nullptr; // int에는 숫자만 대입가능한데 nullptr은 클래스이므로 안됩니다. Int n2 = 0 if( n2 == nullptr ); // 에러 if( nullptr ); // 에러 if( nullptr == 0 ); // 에러 nullptr = 0; // 에러 nullptr + 2; // 에러
  • 29. decltype Auto와 같이 타입을 결정 함수의 반환값으로 타입 결정 가능 변수들의 계산 결과로 타입 결정 가능
  • 30. Decltype사용하기 < 코드 6-1. decltype사용 예 > intHp; decltype(Hp) NPCHp = 5; decltype(Hp + NPCHp) TotalHp; decltype(Hp*) pHp = &Hp; < 코드 6-2. 함수의 반환 타입으로 decltype사용 > intfoo(); decltype(foo()) value;