Valhalla Legends Archive

Programming => General Programming => C/C++ Programming => Topic started by: j0k3r on April 10, 2004, 09:35 AM

Title: Constructor and Destructor Declarations
Post by: j0k3r on April 10, 2004, 09:35 AM
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: }


Title: Re:Constructor and Destructor Declarations
Post by: Eibro on April 10, 2004, 10:49 AM
*shrug* the same reason any other functions are defined outside their respective header files.
Title: Re:Constructor and Destructor Declarations
Post by: Adron on April 10, 2004, 07:26 PM
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.