C++ Static Data Question:
Download Questions PDF

Explain the uses of static class data?

Answer:

1. To provide access control mechanism to some shared resource used by all the objects of a class
2. To keep track of no of objects in existence of a particular class

Following example illustrates first case, to make use of static data member for access control:

#include <iostream>
using namespace std;
class MyClass
{
static int resource;
public:
int get_resource()
{
if (resource)
return 0;
else
{
resource = 1;
return 1;
}
}
void free_resource()
{
resource =0;
}
};
int MyClass::resource;
int main()
{
MyClass ob1, ob2;
if(ob1.get_resource())
cout <<”Resources with ob1”;
if(!ob2.get_resource())
cout <<”Resources denied to ob2”;
ob1.free_resource();
return 0;
}

Thus, the static member variable resource makes sure at a time only one object can access it.

Now, consider the second use: to keep track of no of objects:

#include <iostream>
using namespace std;
class MyClass
{
public:
static int cnt;
MyClass()
{
cnt++;
}
~MyClass()
{
cnt--;
}
};

void func()
{
MyClass temp;
cout << “No of Objects : “<< MyClass::cnt<<”\n”;
}
int MyClass::cnt;

int main()
{
cout <<”Entered main()\n”:
MyClass ob1;
cout << “No of Objects : “<< MyClass::cnt <<”\n”;

MyClass ob2;
cout << “No of Objects : “<< MyClass::cnt<<”\n”;

func();
cout << “No of Objects : “<< MyClass::cnt<<”\n”;

return 0;
}

Output would be:
Entered main()
No of Objects: 1
No of Objects: 2
No of Objects: 3
No of Objects: 2
Thus, only one copy of static member variable cnt is maintained for all the objects created and its value is incremented or decremented whenever and object is created or destroyed.

Download C++ Static Data Interview Questions And Answers PDF

Previous QuestionNext Question
Explain what are volatile variables?We can initialize a value of static variable of a class only when its object is created. No other initialization is permitted.

a. True
b. False