Initializer list vs. initialization method
<p>There are at least two ways to initialize a class in C++.</p>

<p>(1) Initializer List</p>

<pre><code>struct C
{
  int i;
  C() : i(0) {}
};
</code></pre>

<p>(2) Initializer Method</p>

<pre><code>struct D
{
  int i;
  C() { init(); }
  void init() {
    i = 0;
  }
};
</code></pre>

<p>I need to re-init objects of my class from time to time. With the second solution, I can simply call <code>obj.init()</code>. With the first solution, I would either have to add an <code>init()</code> function which essentially duplicates the initializer list effect or use <code>obj = C()</code>.</p>

<p>Is there a more-or-less consensus on what variant is better here? Is there a disadvantage to using an initializer method (except the possible loss of performance as <a href="http://www.parashift.com/c++-faq/init-lists.html" rel="nofollow">mentioned in the C++ FAQ</a>).</p>
