Write a Program in C++ which completes following requirements:
a. Create a class, having a static function printing some information
and invoke that method using scope resolution operator.
b. Try to access non-static data members from static method and
write in comments what happens.
c. Declare and initialize a static variable as counter in a function
(increment it in every call) and call it multiple times printing the
change in value
d. Write about your observations while making this assignment in a
word file about static variables and static methods.
#include<iostream>
#include <stdio.h>
#include <string>
using namespace std;
class A{
static int b;
// int a;
public:
static int count;
//Static function
static int GetValue(){
b = 10;
return b;
}
// static int getValue(){
// a = 10;
// return a;
// }
static int totalCount()
{
return ++count;
}
};
//initialize static variable
int A::b=5 ;
int A::count=0;
int main(){
A obj1, obj2;
// Static function can access only static variable
// In below statement, we have a static variable b of int type and have initialize to 5,
// but inside static function the value of static variable b has been modified to 10.
// Hence, program will work correctly.
cout<<"Value of a is : "<< A::GetValue()<<endl;
// In below statement, compiler will flash an error i.e. illegal reference to non-static member A::a
// cout<< A::getValue();
cout<<"Value of count for 1st function call : "<<A::totalCount()<<endl;
cout<<"Value of count for 2nd function call : "<<A::totalCount()<<endl;
cout<<"Value of count for 3rd function call : "<<A::totalCount()<<endl;
cout<<"Value of count for 4th function call : "<<A::totalCount()<<endl;
return 0;
}
Comments
Leave a comment