본문 바로가기

C++6

변환연산자 operator returntype() 연산자 오버로딩에서 보면.. class A{ ... operator classB* (){ blabal.. } ... }; 이런 선언이 있다. 검색해보니, 변환연산자 오버로딩. 해당 클래스가 B로 형 변환이 될 때의 연산자를 오버로딩하는것이라고.. 2014. 11. 20.
chapter 7-9. 내용정리 1. 반복자 반복자 카테고리와 기능 카테고리 기능 제공자 입력반복자 전방향 읽기 istream 출력반복자 전방향 쓰기 ostream, inserter 전방향반복자 전방향 읽기/쓰기 양방향반복자 전/역방향 읽기/쓰기 list, set, multiset, map, multimap 랜덤액세스반복자 랜덤액세스 deque, vector, string, array 전방향 반복자는 입력/출력반복자의 기능을 포함하고, 양방향 반복자는, 전방향반복자 + 역방향 지원, 랜덤 액세스 반복자는 양방향 반복자에, 랜덤 액세스까지 지원하는 반복자. * 반복자에서 증가/감소 연산자 사용시, 전위증가(감소)연산자를 사용하는 것이 더 유리하다. 후위증가(감소)연산자의 경우 임시객체를 생성하기에 상대적으로 더 느리다. 1) 보조반복자 .. 2014. 11. 7.
Chapter 2-6. 내용정리 1. 템플릿 - 임의의 데이터 타입을 위해 작성된 함수 or 클래스. 정확하게는 '정의'만 한 것이다. 예를 들어 다음과 같은 템플릿이 있다고 하자. template inline const T& max(const T& a, const T& b) { return a>b? a: b; } 위 정의 자체는 아무런 영향을 주지 않는다. 이 정의가 유효하려면, 사용이 되어야 '컴파일타임'에 실제 함수가 만들어진다. 예) int a = 10; int b = 10; max(a,b); // 위 템플릿에서 max(T, T). 여기서는 타입이 int이므로, max(int, int)함수가 생성된다. float c = 10.1f max(a,c); // 찾아봐도 max(T1, T2)는 존재하지 않는다. 컴파일러시 T가 모호하다고.. 2014. 10. 30.
할당자 사용자 지정 할당자 예 #include #include namespace MyLib{ template class MyAlloc{ public: //type정의 typedef T value_type; //원소의 타입 allocator와 동일 typedef T* pointer; //원소의 포인터에 대한 타입 typedef const T* const_pointer; //상수 포인터에 대한 타입 typedef T& reference; //원소의 레퍼런스에 대한 타입 typedef const T& const_reference; //원소의 상수레퍼런스에 대한 타입 typedef std::size_t size_type; //가장 큰 객체의 사이즈를 표기하기 위한 타입 typedef std::ptrdiff_t diff.. 2014. 10. 30.
대체 이건 왜이런 걸까? -_-.. BOOL 멤버변수.. 내 클래스에서.. MsgBox를 일정시간 이후에 띄워줘야 할 일이 있어서... 400ms 후에.. 띄워지도록 수정하였다.. (Timer 이용) 물론 그 400ms 사이에 MsgBox를 또 띄워달라고 메시지를 날리면 곤란해서... 중복해서 뜨지는 않도록 코드를 추가! 바로.. BOOL을 멤버변수로 넣어서... 이놈을 m_bIsPopup으로 정해주었다.. SetTimer할때.. m_bIsPopup에 따라 Timer를 보내주고 말고 하였다.. 물론 OnTimer에서는 저 m_bIsPopup의 값을 Toggle 해 주었지... 머.. 동작은 잘 되더라.. 근데 종료시에 꼭 죽더라.. -_-... 이 해결책이... 멤버로 가지고 있는 m_bIsPopup을... 전역으로 뺐다.. 잘돌아간다... 대체 이거 뭥미-_- 2010. 6. 14.
C++에서 객체삭제시 주의할사항! 객체 삭제시... MyObject *cObject = new cObject; 로 생성을 해버렸으면... delete cObject;가 아니다.. 항상 까먹지 말고.. if( cObject != NULL){ delete cObject; cObject = NULL; } 이것을 하나의 덩어리로 보고 코드를 짜자.. 내가 자주 까먹는 짓거리 -_ - 2008. 6. 15.
728x90