{ 왜냐하면 swap은 강력한 도구로 만들어 주기 때문이다. 무엇을 위한 강력한 도구인가? 안전한 복사를 위한 것이다. 안전한 복사는 어떻게 만들 수 있는가? 여러가지 방법이 있지만, pimpl 이디엄이 가장 널리 쓰인다. 그리고 임시객체를 이용한 방법도 널리 쓰인다. 어떻게 만드는가? ... 귀찮.. 책을 보시라 ㅋㅋ }
2009/04 검색 결과
{ 왜냐하면, 일반적이기 때문이다. 정규형 할당 방식이 무엇인가? 비가상 operator=을 말하는 것이다. 가상 operator= 를 만들면 안되나? 모든 사람들이 일반적으로 operator=에 가상성을 부여하지 않기 때문에, 많이 혼란스러울 수 있기 때문에 만들면 안된다. 다형적 복사를 원한다면 virtual Clone 함수를 만들어서 사용 하는게 더 좋다. }
{ 개체의 조각화는 무엇인가? 기반 클래스 B와 상속 클래스 D가 있다고 했을 때, D의 객체가 B의 객체로 잘리는 현상을 말한다. 예를 들 수 있는가? #include class B { public: B() : a_(0) { } public: virtual void Draw() { std::cout
{ 즉, 컴파일러가 만든 copy constructor 와 operator= 을 사용 할지, 내가 정의한 것들을 사용 할지, 아니면, 이것 자체를 사용 할지 말지를 명확하게 하라는 것이다. 왜냐하면, 컴파일러는 기본적으로 이 두 가지 fuction 을 만들기 때문이다. 그냥 가만히 있다가, 되니까 문제 없겟지 하다가, 되니까 그냥 맞아야지 가 된다. }
{ 여기서 말하는 일관된 방식은 무엇인가? 복사 생성자(T(const T&))를 정의했다면, 복사 할당자(operator=), 디스트럭터(~T()) 를 정의 하라는 것이다. 왜? 복사 생성자를 정의 했다는 의미는 무엇인가 특별한 멤버 변수를 갖는 다는 것을 의미한다. 그러므로, 복사 할당자나 디스트럭터나 특별히 무엇인가 작업을 해 주어야 한다는 것이다. 자신이 뿌린 씨앗은 자신이 거두어야 한다는 것을 의미하는 것과 같다. 복사 생성자만 그러하나? 의미를 볼땐 위의 3가지 중 하나라도 정의 했다면, 다 정의 해 주는게 좋다. 누가 좋다고 하는가? 허브 셔터와 안드레이 알렉산드레스쿠가 그런다. ... 예외는 없는가? 물론 있다. 굳이 3개를 짝으로 구현할 필요가 없다면, 안해도 된다. 이때는 애초에 정의할 ..
최근댓글