C++ - Aggregates(집성체)

출처 Aggregates(이하, 집성체)는 배열과 아래의 조건을 충족한 클래스이다. 사용자 정의 생성자(복사, 무브 포함)이 없음. 생성자는 전혀 기술되지 않거나 default 지정된 상태다. 모든 데이터 멤버가 public 이다. static 데이터 멤버의 가시성은 영향을 주지 않는다. 기본(부모) 클래스가 없음 가상 함수가 없음 struct...
더 읽기

C++ - delete 호출과 구현

출처 #define SAFE_DELETE(p)if(p){delete p;} 옛날, 마이크로 소프트가 DirectX의 샘플에서 이런 매크로를 정의한 바 있다. 아마도 많은 사람이 그 샘플의 대로 익힌 결과, 특히 생각 없이 구현하는 경우도 적지 않을것이다. 포인터가 null이 아님을 판정한 뒤 delete하는 처리이다. delete 대상 포인터가 null로...
더 읽기

C++ - 가상함수의 inline화에 대해서

출처: Web의 어딘가… 혹시 가상함수는 inline 되지 않는다고 생각하는 사람이 있을 것이다. 경우에 따라서 되기도 하고 안 되기도 한다. 되는 경우는 컴파일 시점에서 어떤 클래스의 가상함수를 사용하는지 알 수 있느냐 이다. 아래 코드의 경우 컴파일 시점에서 Delived 클래스의 Function 멤버를...
더 읽기

C++ - 비 public 계승을 사용하는 곳

출처: 웹 어딘가에서… 계승에는 3가지 단계가 있다. public protected private 객체 지향적 사고로는 public 계승은 자주 is-a 관계를 나타낸다 라고 한다. 한편 private 계승, protected 계승은 is-a 관계가 아니다. is-a 관계와 대비해서 has-a 관계 또는 is-implemented-in-terms-of 관계라고 불리기도 한다. public...
더 읽기

C++ - C++ 표준 위원회 문서 P0563R0:Vector Front Operations (pdf)

흥미로운 글이 있어서 일부 번역했습니다.(오랜전에) (원본 https://cpplover.blogspot.kr/2017/02/c-p0550r0-p0601r0.html ) PDF P0563R0:Vector Front Operations vector에 push_front와 pop_front가 없는 이유는 O(N)의 비효율적인 조작 때문이다. vector에 대해 선두에서의 insert, erase는 나머지 요소를 모두 1개씩 당기거나 밀어내야한다. 그런데 최근의 하드웨어의 사정에 의해 완전히 바뀌어 버렸다....
더 읽기