class RVO
{
public:
RVO() { PrintLine("constructor"); }
RVO(const RVO& rhs) { PrintLine("copy constructor"); }
~RVO() { PrintLine("destructor"); }
RVO& operator=(const RVO& rhs)
{
PrintLine("assign operator");
return *this;
}
int dummy;
};
RVO MyMethod (int i)
{
RVO rvo;
rvo.dummy = i;
return rvo;
}
int main()
{
RVO rvo;
rvo = MyMethod(5);
return 0;
}
17번 줄에 MyMethod가 값으로 객체를 리턴(return by value)한다는 게 포인트다. 설명이고 자시고 출력 값부터 보자. 소스 코드는 MSDN 예제 코드를 조금 고쳤다.
실수로 버튼을 잘못 눌렀다. 어떻게 하면 끌 수 있을까? 가장 좋은 인터페이스는 층 버튼이 토글로 작동하는 거다. 즉, 층 버튼을 다시 누르면 꺼지는 식으로 동작하는 게 가장 직관적이지.
구린 엘리베이터는 한번 누르면 못 끄게 돼 있는데, 눌러서 안 꺼지기에 "아 구린 엘리베이터구나"라고 생각했다. 허나.... 이 엘리베이터는 끄는 방법이 무려 더블 클릭. -_-) 그것도 조낸 빠른 속도로 더블 클릭해야지 꺼진다. @eljjoo씨 아니었으면 절대 몰랐지 싶다. 아님 화가 나서 미친 듯이 누르다가 "아~ 더블 클릭이구나!" 이렇게 발견하던가. 열폭한 사람만이 끌 수 있는 엘리베이터 되겠다.
꼭 한번 누르면 꺼질 것처럼 생겨서 말이야.

책 내용을 안 훑어보고 샀다가 벌 받았다. 넓은 주제를 복어 회 마냥 얇게 집어주는 책이다. 정말 책이 안 읽혀서 묵혀놨다가 대충이라도 읽고 집어치우자는 마음가짐으로 겨우 봤다. 지루하고 따분했다. 품절이 겁나서 대충 괜찮다 싶으면 무조건 사던 시기에 딱 벌 받았지 뭐.
뭔가 찝찝해서 코딩에 관련된 항목을 한번 쭉 정리하고 싶다거나 아님 책에서 소개하듯이 선배가 수습사원을 훈련시킬 때 교재로 사용하면 딱 좋을 책이다.
편지가 길어서 죄송합니다. 짧게 쓸 시간이 없었습니다.
그래도 단순함에 대한 멋진 말 하나 건졌다.
크~ CPU를 가정부로 이해한다니! 생각지도 못한 비유. 멋지다. 적절한 비유와 그림을 많이 써서 이해가 잘됐다.
파이프라인부터 하이퍼스레딩까지 CPU를 이해하는데 기초가 되는 내용부터 차근차근 잘 설명해준다. ‘Fetch –> Decode –> Execute –> Write Back’으로 진행되는 기초적인 명령 처리 파이프라인. 한 프로세서 안에서 명령어를 병렬로 실행하는 슈퍼 스칼라(superscalar). 비순차적 명령어 처리(Out-of-order execution, OoOE). 프로그램 카운터(program counter, PC)를 점프시키는 분기가 있을 때, 순서대로 파이프라인에 들어온 명령어들을 버려야 하는 경우가 발생한다. 이런 낭비를 방지하기 위한 분기 예측(branch prediction). 스레드 두 개를 코어 하나에서 실행시키고 버스 2개를 제공해 듀얼 프로세스처럼 사용하게 하는 하이퍼스레딩(Hyper-Threading, HTT). 이거 한동안 안 써서 죽은 기술인 줄 알았는데, 네할렘부터 다시 들어갔음.