본문 바로가기

C++

(40)
Try-Catch 트릭 과 정석의 Cost비교 try catch 트릭이 실제 쓰는 말인지는 모르겠으나 try catch를 리스트나 벡터 순회등에서 사이즈 검사를 제외하고 무한루프를 돌린뒤 out of size 와 같은 에러가 나면 try catch 에 의하여 중지시키던가 TryParse 대신에 그냥 형변환때리고 try catch에 의하여 잡히면 parse 불가능과 같은식으로 사용 할 수 있다. 실제로는 Try-Catch는 스택 되감기때문에 Cost가 상당히 큰 작업이라 하지 않는데 뎁스가 낮고 리스트의 크기가 너무커서 Try-Catch 의 Cost가 무시할만 하게 작을때는 Try-Catch가 더 이득이지 않을까 하는 생각에 C++ 를 이용, 100000000 개의 사이즈를 가지는 벡터에서 시간을 측정해봤는데 디버그 모드에서 Try-Catch가 좀더 ..
왜 파이썬은 self를 사용하고 C++, java, c# 은 this는 사용하는가? 그냥 아무 이유 없이 갑자기 궁굼해졌다 자기자신을 의미할때 C++ 에서는 "this" 라는 키워드를 사용하고 파이썬은 "self"라는 키워드를 사용한다. C++ 의 this는 keyword 이고 파이썬은 단지 개발자가 self라고 변수명을 그렇게 지칭하는것뿐이지만 관례적으로 self를 사용한다. C++ 은 83년, 파이썬은 91년에 나왔으니까 관례적으로 this를 사용해야 맞는거 같은데 self를 사용한다. 이 이유가 너무 궁금해서 찾아봤는데 망할 this 랑 self
[Visual Studio] Template의 intellisence https://blogs.msdn.microsoft.com/vcblog/2018/06/26/template-intellisense/ 와씨 이게되네.. 원래 템플릿은 컴파일러가 코드를 만들어주기때문에오류도 링크에러로 뜨고, 인텔리센스가 그지같이 작동하기때문에 기본적으로 코드상에서 나오는 오류를 확인하기 너무 힘든데.. 모르는 사이에 Visual Studio C++에 킹갓기능이 추가되었다. 걍 템플릿 인수를 설정해서 그때 생기는 인텔리센스를 확인할수있다.
[C++] C++ 의 RTTI, typeid RTTI란 Run Time type info의 약자로타 언어에서의 리플랙션와 유사하다(기능이 많이 떨어진다) 타언어에서 자주쓰던 리플렉션을 C++에서 사용하고싶었는데type_info 구조체를 리턴해주는 typeid라는것이 있었다. 모던 C++은 아니고 원래 C++에 있던거 같은데 있는지도 모르고있었다 ㅜtypeinfo헤더를 포함해주어야한다. int a; double b; MyClass c; cout
[모던 C++] 킹갓 auto 와 decltype auto i = 10; decltype(i) j = 10;auto는 자동으로 형추론을 한다decltype은 declared type의약자로 ()안에 들어간 녀석의 형식을 나타낸다. templateauto Test(T1 a, T2 b)->decltype(a + b) { return a + b;}리턴으로 auto는 가능하나 후행 타입형식을 지정해주어야한다.템플릿의 경우 decltype을 이용하여 후행타입을 정해주면 기가막히게 사용할수있다.
[모던 C++] 스마트 포인터 memory헤더 파일에 정의되어있다. 0.auto_ptr삭제되었다. 1.unique_ptr특정 객체를 하나의 스마트포인터만 소유할수있도록 한다.복사가 불가능하고 move() 함수를 통하여 소유권을 이전 할 수 있다. unique_ptr u_ptr1(new int(10)); unique_ptr u_ptr2 = make_unique(10); //auto u_ptr3 = u_ptr1; //복사 불가 auto u_ptr4 = move(u_ptr2); //소유권 이전 u_ptr4.get(); //포인터 획득 u_ptr1.reset(); //reset으로 메모리 해제 u_ptr2.reset(); u_ptr4.reset(); const unique_ptr c_u_ptr1(new int(10)); //auto c_u_..
[C++ 때려잡기] C++ 심화강의 14 객체지향 마지막 강의 가상함수, 정적 바인딩, 동적 바인딩 2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 1 객체 지향 프로그래밍과 클래스2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 2 접근 한정자2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 3 생성자와 소멸자2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 4 복사 생성자와 깊은 복사2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 5 this 포인터2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 6 Class 선언과 정의2018/08/29 ..
[C++ 때려잡기] C++ 심화강의 13 다형성, 다운 캐스팅 업 캐스팅 2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 1 객체 지향 프로그래밍과 클래스2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 2 접근 한정자2018/08/27 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 3 생성자와 소멸자2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 4 복사 생성자와 깊은 복사2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 5 this 포인터2018/08/29 - [교육 노트/C++ 심화강의] - [C++ 때려잡기] C++ 심화강의 6 Class 선언과 정의2018/08/29 ..