Explain the uses of static class data?
Submitted by: Administrator1. 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.
Submitted by: Administrator
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.
Submitted by: Administrator
Read Online C++ Static Data Job Interview Questions And Answers
Top C++ Static Data Questions
☺ | What is local class in C++? |
☺ | Explain static type checking? |
☺ | Explain what are volatile variables? |
☺ | What is static class data? |
☺ | Explain dynamic type checking? |
Top C Plus Plus Language Categories
☺ | C++ Pointers & Functions Interview Questions. |
☺ | C++ Operator Overloading Interview Questions. |
☺ | C++ Exception Handling Interview Questions. |
☺ | C++ Template Interview Questions. |
☺ | C++ Virtual Functions Interview Questions. |