포스트를 만든 목적 01:00 까지 심심해서 내용 다음 코드를 읽고, 하이라이트 된 b.f()는 어떤 것을 출력 할지 알아 맞추어 보세요. // http://www.ikpil.com #include class A { public: void f() { printf("A::f() is called\n"); } void g() { f(); } }; class B : public A { public: void f() { printf("B::f() is called\n"); } }; int main(void) { B b; b.f(); // 어떤 것? b.g(); // 어떤 것? A *pa = &b; pa->g(); // 어떤 것? return 0; } 결론 ... 일반적이지 않은건 무조건 어렵다. 여담 저는 한개..
연구실/파편화된 기록들 검색 결과
Purpose-post built for 과 while 이 무슨 차이가 있을까 곰곰히 생각하다가, 경험을 통해 몇가지를 정리 할 수 있어, 이렇게 글로 남기게 되었다. - 익필 Content 문법 공부를 하면 알겠지만, loop를 만들기 위해선 대표적으로 for 과 while을 사용 한다. do while 도 있지만, 이건 논외이다.(역활이 확실히 구분 되므로) 코드를 리뷰하는 내 입장에서 오늘 이런 경험을 하게 되었다. 1. while 이니까, "어떻게 루프를 빠저 나가지?" while 구성은 조건 판별 구역과 루프 구역으로 나뉘어져 있다. while (조건문) { 루프 구역 } 판별 구역 외에서 어디부터 어디까지 루프를 돌리라고 명시적으로 나타내지 못하기 때문에, while은 loop 밖에서 loop..
Introduction 코드 리뷰하다가, 가끔 만나는 포인터 접근, 이러한 접근을 잘못하면 크래쉬가 나기 쉽다. 이러한 사실을 알고 있음에도, 포인터 접근에 대한 계산이 가끔 잘 안될 때가 있다. 오늘 그러한 계산이 잘 안되는 코드를 발견하여 정리해 둔다. Content 크다 와 작다는 같다 보다 왜 더 이해 하기 어려울까? 우선 작다 또는 크다의 의미를 if 문을 통해 생각해 보면 다음과 같다. if ( 1 > 2 ) 는 거짓이다. 왜냐하면 1이 2보다 작은데 크다고 했기 때문이다. if ( 2 > 2 ) 는 거짓이다. 왜냐하면 2는 2보다 크지는 않기 때문이다. if ( 3 > 2 ) 는 참이다. 왜냐하면 3은 2보다 더 크기 때문이다. 그러므로 크다 또는 작다의 반대는 >= 이거나 limit_ind..
Introduction 코드 리뷰를 하다가 if문이 많을 수록 코드 분석을 더 힘들게 한다는 사실을 알게 되었다. 그러던 중 if문을 고의로 없애버리는 코드를 작성하기 시작했는데, 문득, 성능도 더 좋을까? 라고 생각하는 찰나에 테스트 코드를 만들고 테스트 해보았다. content 하는 일은 같으나, 한쪽은 if문이 있고, 한쪽은 if문이 없다. 하는 일은 현재 나이를 저장한 변수가 초기화 나이까지 되었을 때, 0으로 리셋 해 주는 일이다. #include #include int main( void ) { boost::timer t0; const int reset_age = 100; int my_age = 0; int loop_count = 1000000000; t0.restart(); // case 1..
시작하기에 앞서 학생시절 Effective STL 에서, "알고리즘이 더 좋다" 라는 내용을 보고, 그대로 받아 들여서, 사용하다가, 동기 중 한명이 "모하러 알고리즘을 써 어차피 똑같은거 아니야?" 라고 물었을 때, "보다 더 직관적이잖아." 라고 대답을 했던것으로 기억을 한다. 하지만 제시된 예라든지, 논리적으로 설명을 하지 못해서일까, 팀프로젝트를 진행 할 때, 알고리즘을 사용 하는게 힘들게 되었다. 8개월 정도가 지나고 나서, 그 동안 다른 사람들이 짠 코드 리뷰를 하는 순간 내 직관력은 "확실이 더 좋다." 라고 결론을 냈다. 이번 포스팅은 왜 더 좋은지에 대한 증명이다. 나와있는 예는 "한 타입의 객체를 100개 담은 vector에서 특정 값을 찾고, 어떤 일을 수행하고, 지우는 작업"이다. ..
최근댓글