title: Confused about C++ class usage
body: <p>The following is the code which makes me a little confusing about the usage of class.</p>
  
  <pre><code>    template &lt;int dim&gt;
      class FEM
      {
      public:
        FEM (unsigned int order,unsigned int problem); 
        ~FEM(); 
      ...
      FESystem&lt;dim&gt;        fe;
      DoFHandler&lt;dim&gt;      dof_handler;
      ...
      }
  
      template &lt;int dim&gt;
      FEM&lt;dim&gt;::FEM(unsigned int order,unsigned int problem)
      :
      fe (FE_Q&lt;dim&gt;(order), dim), 
      dof_handler (triangulation)
      {
      ...
      }
  </code></pre>
  
  <p>Here the "FESystem", "DoFHandler" and "FE_Q" are some predefined class in a header file. I have several questions about this code:</p>
  
  <p>(1)Why the constructors "fe" and "dof_handler" are declared outside the class "FE" itself, could it be possible that they be declared inside the first bracket, namely inside the "FE" class definition?</p>
  
  <p>(2)What are the meanings of the double colon and colon "<strong>::</strong>" and "<strong>:</strong>" in the code respectively? Why they are used here? Does the colon ":" mean inheritance?</p>
  
  <pre><code>    template &lt;int dim&gt;
      FEM&lt;dim&gt;::FEM(unsigned int order,unsigned int problem)
      :
      fe (FE_Q&lt;dim&gt;(order), dim), 
      dof_handler (triangulation){...}
  </code></pre>
  
  <p>I'm new in C++. Could anyone give me some help? Appreciate it so much!</p>