Mega Code Archive

 
Categories / C++ Tutorial / Language Basics
 

Initialize static member field outside the class declaration

#include <iostream> using std::cout; using std::endl; class Box {   public:     Box() {       cout << "Default constructor called" << endl;       ++objectCount;       length = width = height = 1.0;     }     Box(double lvalue, double wvalue, double hvalue) :                               length(lvalue), width(wvalue), height(hvalue) {       cout << "Box constructor called" << endl;       ++objectCount;     }     double volume() const {       return length * width * height;     }     int getObjectCount() const {return objectCount;}   private:     static int objectCount;     double length;     double width;     double height; }; int Box::objectCount = 0; int main() {   cout << endl;   Box firstBox(17.0, 11.0, 5.0);   cout << "Object count is " << firstBox.getObjectCount() << endl;   Box boxes[5];   cout << "Object count is " << firstBox.getObjectCount() << endl;   cout << "Volume of first box = "        << firstBox.volume()        << endl;   const int count = sizeof boxes/sizeof boxes[0];   cout <<"The boxes array has " << count << " elements."        << endl;   cout <<"Each element occupies " << sizeof boxes[0] << " bytes."        << endl;   for(int i = 0 ; i < count ; i++)     cout << "Volume of boxes[" << i << "] = "          << boxes[i].volume()          << endl;   return 0; } Box constructor called Object count is 1 Default constructor called Object count is 6 Volume of first box = 935 The boxes array has 5 elements. Each element occupies 24 bytes. Volume of boxes[0] = 1 Volume of boxes[1] = 1 Volume of boxes[2] = 1 Volume of boxes[3] = 1 Volume of boxes[4] = 1