when to declare an member of class
<p>According to Bjarne Stroustrup:</p>

<blockquote>
  <p>if (and only if) you use an initialized member in away that requires it to be stored as an oject in memory ,the member must be(uniquely) defined somewhere. The initializer may not be repeated.</p>
</blockquote>

<p>(<em>The C++ Programming Language, 3rd Edition</em>, Section 10.4.6.1)</p>

<p>He gives this example:</p>

<pre><code>class curious{  
     public:  
     static const int c1=7;  
     //..
};  
const int curious::c1;  //necessary
</code></pre>

<p>Then why it is necessary to define a <code>static</code> member, because we may not be initializing it at all?</p>

<p>Also, <code>const</code> and reference members are not declared anywhere, even though it is necessary to initialize them (no default constructor).</p>
