240 likes | 466 Views
Visual C++ 2008 Feature Pack. www.anycoding.com Furyheimdall.tistory.com. Overview. 1. MFC Update. 2. C++ TR1. 3. Q&A. 4. Contents. Overview. System Requirements Supported Operating Systems: Windows Server 2003; Windows Vista; Windows XP
E N D
Visual C++ 2008Feature Pack www.anycoding.com Furyheimdall.tistory.com
Overview 1 MFC Update 2 C++ TR1 3 Q&A 4 Contents Company Logo
Overview System Requirements • Supported Operating Systems: • Windows Server 2003; Windows Vista; Windows XP • Visual Studio: This Feature Pack is only supported on systems which have the English language (ENU) version of Visual Studio 2008 Standard Edition or above installed. • Support for systems with non-English versions of Visual Studio 2008 installed will be available in Visual Studio 2008 Service Pack 1. What’s a Visual C++ Feature Pack? MFC의 Update버전인 MFCNext와 C++0x 표준에 들어갈 TR1의 지원이 포함된 업그레이드 팩 -MFCNext : http://en.wikipedia.org/wiki/Microsoft_Foundation_Class_Library -TR1 : http://en.wikipedia.org/wiki/Technical_Report_1 Company Logo
MFC Update • Office Ribbon style interface • Office 2007, Office 2003 and Office XP look and feel • Modern Visual Studio-style docking toolbars and panes • Fully customizable toolbars and menus • A rich set of advanced GUI controls • Advanced MDI tabs and groups • And much more Company Logo
MFC Update (Continue) • Office Ribbon style interface Company Logo
MFC Update (Continue) • Office 2007, Office 2003 and Office XP look and feel (Visual Manager) Windows Explorer Project Style + Visual Studio 2005 Visual Style Visual Studio Project Style+ Visual Studio 2005 Visual Style Office Project Style + Office Visual Style Company Logo
MFC Update (Continue) • Modern Visual Studio-style docking toolbars and panes (Smart Docking) Company Logo
MFC Update (Continue) • Fully customizable toolbars and menus Company Logo
MFC Update (Continue) • Advanced MDI tabs and groups MDI Tabbed Standard MDI Tabbed Group :Default Company Logo
C++ TR1 • Smart pointers(Shared_ptr) • Regular expression parsing • New containers (tuple, array, unordered set, etc) • Sophisticated random number generators • Polymorphic function wrappers • Type traits • And more! • C++ 라이브러리 작업 그룹이 작성한 1차 기술 보고서 • (Technical Report 1) • http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf * Finialize되지 않은 Draft 규격 Company Logo
C++ TR1 (Continue) • shared_ptr • 자원의 라이프타임을 관리하는 일은 대부분 프로그램에서 발생하는 공통적인 문제. • 자원관리 문제를 해결하기 위해서 사용할 수 있는 방법 • - 자동변수 (Resource acquisition is initialization) • - Garbage Collection 사용 • 모든 경우에 적용은 불가능. • - RAII는 자원의 라이프타임이 정적으로 정해질 수 있고, 프로그램의 lexical 구조에 맞아 떨어질때 쓸수 있음. • - Garbage Collection 은 메모리 관리에는 적합하지만 다른 자원에는 필요 이상으로 복잡한 해결책. • 이에 대한으로 참조 카운트 smart point 의 등장. Company Logo
C++ TR1 (Continue) • shared_ptr (Continue) • 참조 카운트 포인터의 기본 아이디어 • - raw 포인터를 사용하지 않고 포인터 "처럼 보이는" wrapper 클래스를 사용. • - *연산자로 dereference 가 가능하며, ->연산자로 멤버에 접근 가능. • Raw포인터와 차이점 • wrapper 클래스는 몇가지 기본 연산과 생성자, 소멸자, 할당 연산자를 • 정의해서 특정 객체에 대한 소유자의 정보를 유지 • C++ 은 TR1은 참조카운트 smart pointer 로 shared_ptr를 제공 Company Logo
C++ TR1 (Continue) • Shared_ptr example #include <memory> #include <iostream> using namespace std; using namespace std::tr1; class TClass { public: TClass(){} void DeleteObject(){ cout << “DeleteObject" << endl; } private: ~TClass(){ } }; void TClassDeleter(TClass *p) { p->DeleteObject(); } intmain() { shared_ptr<int> ptr0; shared_ptr<int> ptr1(new int(18)); cout << "ptr0 address : " << ptr0 << endl; cout << "ptr1 dereference : " << *ptr1 << endl; shared_ptr<TClass> ptr2(new TClass, TClassDeleter); shared_ptr<TClass> ptr3(ptr2); return (0); } Company Logo
C++ TR1 (Continue) • New containers • tuple : • STL pair의 확장판. • pair은 항상 두 객체를 하나로 묶어야 할 경우에 유용. (ex:함수가 여러개의 값을 리턴할 때) • but, 꼭 두개의 값을 묶을 때만 pair 을 쓸 수 있는 것은 제약이 심함. • TR1은 2개 이상의 객체를 하나로 묶을 수 있는 컨테이너로 tuple을 도입 • array: • C/C++ 기본 배열을 사용하게 되면 길이를 비롯해서 불편한 점이 많음. • 일반적으로 TR1 전에는 std::vector 을 대신해서 사용. • TR1에는 array 클래스가 도입. • 기존 STL 알고리즘과 호환되는 면에서 장점. Company Logo
C++ TR1 (Continue) • New containers (Continue) • Unordered Associative Containers: • TR1에서 4개의 연관 컨테이너(Associative Containers)추가 • - unordered_set • - unordered_multiset • - unordered_map • - unorderd_multimap • -TR1에서 새로 추가된 순서없는 컨테이너는 기존 컨테이너 보다 검색속도가 빠름 • -다른 STL 컨테이너와 마찬가지로 동일한 요소들만 허용. Company Logo
C++ TR1 (Continue) • Polymorphic function wrappers • problem) A타입과 B 타입의 인자를 취하고 C 타입을 리턴하는 뭔가를 작성. • solve) 1. 일반 함수로 작성 • f(A a, B b) {...} • 2. A를 별도 클래스로 작성했다면 멤버함수로 작성 • class A { • ... • C g(B b); • }; • 3. std::plus<T> 처럼 함수 객체로 작성 • struct h{ • C Operator()(A,B) const{...} • }; Company Logo
C++ TR1 (Continue) • Polymorphic function wrappers (Continue) • 이전의 방법들은 서로 문법이나 의미론에서나 차이가 있음. • AxB->C 라는 같은 처리를 하는데 세 가지 다른 방법이 있는데, 언어 입장에서 보면 이전 페이지의 세가지 방법은 모두 다른 타입. • 이런 다른 방법을 하나의 타입으로 표현하기 위해 function wrapper 클래스 도입 • function<C(A,B)> 이라는 타입은 A와 B 를 취하고, C 를 리턴하는 어떤 함수 (일반함수, 멤버함수, 함수객체) 라도 표현할 수 있음. • ->이것은 상위 라이브러리가 사용자가 넘겨준 callback 을담고 있을 일관된 • 매커니즘을 갖게 됨. Company Logo
C++ TR1 (Continue) • Polymorphic function wrappers Example • #include <tr1/functional>#include <vector>#include <iostream>using namespace std;using namespace std::tr1;structmy_class{ void f() { cout << "my_class::f()“ << endl; }}; • void g(my_class) {cout << "g(my_class)" << endl;} • structh { void operator()(my_class) const {cout << "h::operator()(my_class)" << endl; }}; • intmain(){typedef function<void(my_class)> F; vector<F> ops;ops.push_back(&my_class::f);ops.push_back(&g);ops.push_back(h());my_classtmp; for (vector<F>::iteratori = ops.begin();i != ops.end(); ++i) (*i)(tmp);} Company Logo
Q&A www.anycoding.com Furyheimdall.tistory.com
Appendix : Standard C++ Library TR1 Extensions Reference TR1 Regular Expressions ( TR1 정규식들(Expressions) )Discusses the grammars of the various regular expression engines that TR1 supports.( TR1을 지원하는다양한정규식표현엔진의문법을의논하다 )<array>Defines the container template class array and several supporting templates.( 컨테이너템플릿클래스배열과몇개의템플릿을원조하는것을정의한다 )<functional> (TR1)Defines several templates that help construct function objects, which are objects of a type that defines operator(). A function object can be a function pointer, but more typically, the object is used to store additional information that can be accessed during a function call.( 몇개의조립을도와주는 operator()를 정의하는타입의객체인함수객체인템플릿정의한다. 함수객체는포인터할수있수있으나 더 전형적으로는객체는함수를부르는동안접근할 수 있는추가적인정보를저장하는데익숙하다. ) Company Logo
Appendix : Standard C++ Library TR1 Extensions Reference <memory> (TR1)Defines a class, an operator, and several templates that help allocate and free objects.( 클래스, 오퍼레이터, 그리고몇개의할당과해제객체를돕는템플릿을정의한다. ) <random>Defines many random number generators.( 많은보편적인랜덤수를정의한다. ) <regex>Defines a template class to parse regular expressions, and several template classes and functions to search text for matches to a regular expression object.( 정규식표현과몇개의템플릿클래스들그리고정규식표현객체에맞춤을위한문서찾기함수를분석하는템플릿클래스를정의한다.)<tuple>Defines a template tuple Class whose instances hold objects of varying types.( 템플릿각지각색의타입의객체를붙잡는인스턴스인tuple class 정의한다. )<type_traits>Defines templates that provide compile-time constants that give information about the properties of their type arguments.( 컴파일시간에불변하는그들의타입논의의소유물에관한정보를주는것을제공하는템플릿을정의한다. ) Company Logo
Appendix : Standard C++ Library TR1 Extensions Reference <unordered_map>Defines the container template classes unordered_map and unordered_multimap and their supporting templates.( 컨테이너템플릿클래스unordered_map 과 unordered_mulitmap 과 그들의지원하는템플릿들을정의한다. )<unordered_set>Defines the container template classes unordered_multiset and unordered_set and their supporting templates.( 컨테이너템플릿클래스unordered_multiset 과 unordered_set 과 그들의지원하는템플릿들을정의한다. )<utility> (TR1)Defines several general templates that can be used throughout the Standard Template Library.( 몇개의표준템플릿라이브러리전부를사용할 수 있는보편적인템플릿을정의한다. ) Company Logo
Appendix : Reference site MSDN TR1 http://msdn.microsoft.com/en-us/library/bb982198.aspx Zeroone http://zeroone.tistory.com Me http://furyheimdall.tistory.com 김윤수의 이상계를 꿈꾸며 http://yesarang.tistory.com/ 섭스의 프로그래밍 공부 http://sclove12.tistory.com Company Logo