• 클래스의 생성자 호출 순서는 다음과 같다.

    1. 기반 클래스의 생성자 호출.
    2. 맴버 데이터의 생성자 호출.
    class PipeStream : public Stream
    {
    	Buffer buffer;
    public:
    	// 아래처럼 코드상 버퍼를 먼저 초기화 한다고 해도 C++ 규칙상 생성자 호출 순서는 변하지 않는다.
    	PipeStream() : buffer(1024), Stream(buffer) {}
    };
    
    • 기반 클래스인 Stream 생성자 보다 Buffer 생성자를 먼저 호출하게 하려면

      • Buffer를 제공하는 또 다른 기반 클래스를 만들어야 한다.
      class PipeBuffer
      {
      protected:
      	Buffer buffer{1024};
      }
      
      // PipeBuffer 를 먼저 상속받는다.
      // PipeBuffer 가 먼저 초기화 되고 그 뒤 Stream이 초기화 된다.
      class PipeStream : public PipeBuffer, public Stream
      {
      public:
      	PipeStream() : Stream(buffer) {}
      }