본문 바로가기

Visual Studio Community 2015 다운로드 방법 vs 2017 받고나서 2015 페이지 찾기 너무 어려워졌다 -_- 찾을때마다 헤멘당;;; 이참에 기록해놔야지 ㅋ 1. 아래 페이지 가서 회원가입하고 받는 방법이 있다 (무료임)https://my.visualstudio.com/Downloads?q=visual studio 2015 2. 내가 첨부한 파일을 다운 받아서 설치한다 Visual Studio Community 2015 다운로드 방법비쥬얼 스튜디오 2015 다운로드 방법비주얼 스투디오 2015 다운로드 방법 더보기
c++ 11, 14 보편참조 && 보편참조 && 이거 빡친다 void f(w&& p); // 오른값참조w&& v = widget(); // 오른값참조auto && v2 = v; // 오른값참조아님★ template // 오른값참조void f(vector&& p); template //오른값참조아님★void f(T&& p); 위에 두개 오른값참조가 아니라 보편참조가 되는 녀석들을 보면auto && v2 = v; 이건 뭐... 쉽지 v에서 넘겨주면 일단 l-value인데 && 로 받아도 r-value는 될수없다. template void f(T&& p); 저 템플릿도 마찬가지임, 두개 공통점 살표보면 T, auto 사용했다, 형식연역 일어난다.오른값참조로된놈들 보면, 정확하게 타입 받는다. 형식연역 없음. 예외로vector&& p 를 보면 .. 더보기
c++11 move, forward 기본적으로 move가 뭔지 알고 있다는 가정하에 적겠음 (move -> 리무브레퍼런스만하는거모두알죠?-.-) std::move 무조건 오른값캐스팅std::forward r-value로 왔을때만 move 캐스팅 예제logAndProcess(w);logAndProcess(move(w)); logAndProcess(T&& param){process(forward(param)); // 위에서 move로 넘겨줬으면 move 캐스팅 함.} 그리고 +로 하나더... (이건 다른데 쓸곳이 없네)rvo 라고 있음. 처음에 move 배우면 신나서 클래스에 막 && 생성자 만들어주고 하면서move 빵빵쓰고 하다가나중에 일반함수 리턴값에도 막 move 쓰고 싶어지는데... 자제해야함이유는 rvo 검색하면 자세하게 나오고 간단.. 더보기
c++11, 14 weak_ptr weak_ptr 1. 객체의 참조 횟수에 영향 미치지 않음.2. 가리키는 대상이 ★이미 파괴★ 되었어도 ★극★복★가능해야함3. 역참조 불가능4. 널판정 불가능5. weak_ptr은 shared_ptr을 보강하는 포인터이다. ★사용법!auto ptr = make_shared();weak_ptr wptr(ptr); //참조횟수 안늘어난다~ 오 ~ 굿~ptr = nullptr; // 참조횟수 0되고, widget 파괴! ★여기서 weak_ptr을 사용하려면?!if (wptr.expired()) // 짜잔~ 그러나 저렇게 하면 안된다네-_- 저기서 통과해도 다른스레드에서 뻘짓하면그 아랫줄에서 미정의 행동 발생 가능성이 아직까지 있음. ★그렇다면!!1. shared_ptr spw1 = wptr.lock(); //.. 더보기
c++ 11, 14 shared_ptr 자원관리!! shared_ptr 공유포인터!!생성자->ref 증가소멸자 ->ref 감소복사배정->증가 감소이동생성 -> shared_ptr를 이동해서 새로운 shared_ptr에 생성하면 기존 shared_ptr은 nullptr이 된다. (복사즐)커스텀삭제자 지원은 unique_ptr과 동일하다. (커스텀삭제자 이용해도 객체 크기는 그대로) shared_ptr -> 1. 생포인터의 두배이다2. 동적할당해야한다 (참조횟수때문에) 커스텀삭제자->std::shared_ptr spw(new widget, customDel); // unique_ptr과좀다름 make_shared -> 항상 제어 블록 생성 헬 예제 1.생포인터로 shared_ptr 생성자 바로 호출하면 제어블록 생성된다그말인즉슨......아래 예.. 더보기