출처 #define SAFE_DELETE(p)if(p){delete p;} 옛날, 마이크로 소프트가 DirectX의 샘플에서 이런 매크로를 정의한 바 있다. 아마도 많은 사람이 그 샘플의 대로 익힌 결과, 특히 생각 없이 구현하는 경우도 적지 않을것이다. 포인터가 null이 아님을 판정한 뒤 delete하는 처리이다. delete 대상 포인터가 null로...
더 읽기
출처: Web의 어딘가… 혹시 가상함수는 inline 되지 않는다고 생각하는 사람이 있을 것이다. 경우에 따라서 되기도 하고 안 되기도 한다. 되는 경우는 컴파일 시점에서 어떤 클래스의 가상함수를 사용하는지 알 수 있느냐 이다. 아래 코드의 경우 컴파일 시점에서 Delived 클래스의 Function 멤버를...
더 읽기
출처: 웹 어딘가에서… 계승에는 3가지 단계가 있다. public protected private 객체 지향적 사고로는 public 계승은 자주 is-a 관계를 나타낸다 라고 한다. 한편 private 계승, protected 계승은 is-a 관계가 아니다. is-a 관계와 대비해서 has-a 관계 또는 is-implemented-in-terms-of 관계라고 불리기도 한다. public...
더 읽기
흥미로운 글이 있어서 일부 번역했습니다.(오랜전에) (원본 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개씩 당기거나 밀어내야한다. 그런데 최근의 하드웨어의 사정에 의해 완전히 바뀌어 버렸다....
더 읽기
더 읽기
“Go 1.15”에서 변화의 대부분은 툴 체인, 런타임, 라이브러리의 구현이며, 기존과 마찬가지로 Go 버전 1과의 호환성이 유지되고 있어서 대부분의 프로그램은 수정 없이 실행할 수 있다. 주요 변경 사항 중 하나는 링커의 대폭적인 개선으로 링커의 리소스 사용량(시간 및 메모리)이 절감 되고, 코드...
더 읽기
일반적으로 구조체 멤버에 접근하는 예 struct Point { int x; int y; int z; } int main(void){ Point p; p.x = 100; p.y = 200; p.z = 300; cout << "p = (" << p.x << ", " << p.y...
더 읽기
VC++을 통해서 멤버 함수를 정의할 때 파리미터가 없는 함수의 경우 파라미터 리스트가 들어가는 자리에 void가 들어가는 것을 볼 수 있다. 기본적으로 void f()와 void f(void)의 함수 시그네쳐는 같은 것이다. 다만 파라미터 리스트에 void를 사용하는 것은 ‘빈 파라미터 리스트’라는 것을 뜻하기...
더 읽기
List에 있는 요소를 foreach로 순회하는 중에 요소를 삭제하는 방법 삭제할 항목을 다른 컨테이너에 담아 놓고, 뒤에 일괄적으로 삭제한다. List<GameObject> RemoveList; foreach(GameObject obj in colliderList) { if(obj.currenthp <= 0) { RemoveList.Add(list); } } foreach (GameObject obj in RemoveList) { colliderList.Remove(list); }...
더 읽기
더 읽기