• Welcome to Valhalla Legends Archive.
 

Constructor and Destructor Declarations

Started by j0k3r, April 10, 2004, 09:35 AM

Previous topic - Next topic

j0k3r

Why are the constructor and destructor declared outside of the header file? What are the advantages to excluding it from the header file?


1:  #include <iostream.h>
2:  class Cat
3:   {
4:  public:
5:   Cat (int initialAge);
6:   ~Cat();
7:    int GetAge() { return itsAge;}             // inline!
8:    void SetAge (int age) { itsAge = age;}     // inline!
9:    void Meow() { cout << "Meow.\n";}             // inline!
10:  private:
11: int itsAge;
12: };



1:   // Demonstrates inline functions
2:   // and inclusion of header files
3:
4:   #include "cat.hpp"  // be sure to include the header files!
5:
6:
7:   Cat::Cat(int initialAge)   //constructor
8:   {
9:      itsAge = initialAge;
10:  }
11:
12:  Cat::~Cat()             //destructor, takes no action
13:  {
14:  }
15:
16:  // Create a cat, set its age, have it
17:  // meow, tell us its age, then meow again.
18:  int main()
19:  {
20:     Cat Frisky(5);
21:     Frisky.Meow();
22:     cout << "Frisky is a cat who is " ;
23:     cout << Frisky.GetAge() << " years old.\n";
24:     Frisky.Meow();
25:     Frisky.SetAge(7);
26:     cout << "Now Frisky is " ;
27:     cout << Frisky.GetAge() << " years old.\n";
28:      return 0;
29: }


QuoteAnyone attempting to generate random numbers by deterministic means is, of course, living in a state of sin
John Vo

Eibro

*shrug* the same reason any other functions are defined outside their respective header files.
Eibro of Yeti Lovers.

Adron

Some compilers may generate more than one instance of a function if it's defined in the header file. The function may also always be inlined. If the function is not defined in the header file, it mostly can't be inlined.