title: why table and tablebuilder in leveldb use struct rep?
body: <p>Recently I read the source code of leveldb, but I am confuse about the rep struct in the table and table_builder source.</p>
  
  <p>since we can directly store the member variable directly in the class Table and class TableBuilder.</p>
  
  <p>But why the author make a struct Rep, and store the member variable in the struct Rep.</p>
  
  <p>I can come up whit one reason, because the table and table_builder will expose to the user, so we want to hidden the implementation.
  Is it right? or there is some other idea that I miss, or is it some design pattern?</p>
  
  <p>Thank you</p>