Static data members and static member function, C/C++ Programming

Assignment Help:

Static Data Members:

A data member inside the class can construct as static data member.   There are few

guidelines to be followed when declaring static data member.

  • It is declared as a private data member.
  • Only one copy of the static data member is created any numbers of objects are created from that class. Therefore the static data member will be same for all the objects created.
  • The static member must be defined outside the class like function with class name.
  • The static member can be initialized in the definition and can be used only within its class.

 

The following program will give clear difference between static data count and regular data number members.  The static data is common to all objects but regular data is unique to its object.

 

class item

{int number; static int count; public:

void getdata()

{++count;

number=count;

}

void putdata(void)

{cout<<"Count is "<

cout<<"Number is "<

}

};

int item::count=0;

int main()

 

 

{           clrscr();

item x,y,z; //Three object produced from class item x.getdata();

y.getdata();

z.getdata();

x.putdata(); The count is 3 and number is 1

y.putdata(); The count is 3 and number is 2 z.putdata(); The count is 3 and number is 3

return 0;

}

 

Static Member Function:

The static member function can be specified like static data member.  It works asc a static member data except the static member data is used in static member function.

Rules of Static Member function are given below:

  • The static member function can read static data member only from its class.
  • The static member function is called using class name not object name. class_name::static_function_name( ); It can also be called using object.static_fun( ).

 

The given program will illustrate how the static member function is worked.

 class find

{static int count;

int code;

public:

static void showcount(void)

{cout<<"Count is " <

}

void setcode(void)

{code = ++count;

}

void setcount(void)

{ cout<<"Code is " <

}

};

int find ::count=0;

int main()

{clrscr();

find x,y,z;

x.setcode(); // Code and count is 1. y.setcode(); //Code and count is 2 find::showcount(); //Count is 2

 

z.setcode(); //Code and count is 3 find::showcount(); //Count is 3

 

x.setcount(); // Code is 1 for object x.

 

 

 

 

y.setcount(); // Code is 2 for object y. z.setcount(); // Code is 3 for object z.

 

x.setcode(); // Code and count is 4. y.setcode(); //Code and count is 5 z.setcode(); //Code and count is 6 find::showcount(); //Count is 6

//The value of code will increase from its previous value of that object.

x.setcount(); // Code is 4 for object x. y.setcount(); / Code is 5 for object x. z.setcount(); // Code is 6 for object x.

return 0;

}

 

Since the count is declared as static it has only one copy irrespective of number of objects created.   When static count function called again and again it will increase count for all the objects created simultaneously therefore the count will be uniform for all object, but for the data member code it is unique for each object created because it is not a static data member.  Therfore from the above example there will only one value for count data member irrespective of number of objects constructed since it is a static data member, where as for code data member the value will be different for each object.


Related Discussions:- Static data members and static member function

#Program, Write a program that accepts two real numbers from a user and a s...

Write a program that accepts two real numbers from a user and a select code. If the entered select code is 1, have the program add the two previously entered numbers and display t

#tit, Write a program to find the area under the curve y = f(x) between x =...

Write a program to find the area under the curve y = f(x) between x = a and x = b, integrate y = f(x) between the limits of a and b. The area under a curve between two points can b

How many non-boundary pits and peaks are on the map, Armed with your functi...

Armed with your function from above, we can do some interesting things. For instance, any pixel where the offsets are both zero is a pit (lower than all surrounding points) .

Write a program that illustrate Macros with Arguments, Write a program tha...

Write a program that illustrate  Macros with Arguments? Macros is able to also have arguments, just as functions can. #define AREA(x)(3.14*x*x) Then at any time the prepr

M - algorithm corrections, Of course it is C[i] = A[i] + B[i].It was a typi...

Of course it is C[i] = A[i] + B[i].It was a typing mistake,never mind. You just understand the concept. 27-1 b. for grain-size=1 n=A.length grain-size=1 r=n for

Cange to palindrome, A palindrome is a string that reads the same from the ...

A palindrome is a string that reads the same from the both the ends. Given a string S convert it to a palindrome by doing character replacement. Your takes is to convert S to palin

Array, array itself is a pinter.explain

array itself is a pinter.explain

Logic behind object oriented programming, In this we will take a closer loo...

In this we will take a closer look at the logic behind Object Oriented Programming.  Read through the pseudocode listed below and answer the following questions. Class Square

Define how passing arrays to a function, Define How Passing Arrays to a Fun...

Define How Passing Arrays to a Function? A complete array can be passed to a function as an argument. The manner in which the array is passed be different from that of an ordin

Determine the current flowing by resistor, For the circuit shown in Figure,...

For the circuit shown in Figure, verify the p.d. across resistor R3. If the total resistance of the circuit is 100Ω, verify the current flowing by resistor R1. Find also the

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd