Static Member Variables and Functions Last updated 32320
Static Member Variables and Functions Last updated 3/23/20
Static Member Variables & Functions • Static Member Variables • Normally – every object gets its own copy of each of it’s member variables Circle obj 1(5); Circle obj 2(10); objects radius value is 5 objects radius value is 10 • Objects of the same type can all share static member variables • Make the member variable static inside the class declaration • Declare the static variable outside the class in the global area of the program EE 2510 2 © tj
Static Member Variables & Functions • Static Member Variables - example /* * Circle 3. h * * Created on: Mar 9, 2019 * Author: johnsontimoj */ // // class declaration for Circle 3 class // for ee 2510 class notes // #ifndef CIRCLE 3_H_ #define CIRCLE 3_H_ /* * Circle 3. cpp * * Created on: Mar 9, 2019 * Author: johnsontimoj */ #include "Circle 3. h" #define PI 3. 14159 Circle 3: : Circle 3() { r = 1; circle_cnt++; return; } class Circle 3 { // member data private: double r; public: static int circle_cnt; void Circle 3: : set. Radius(double r){ this->r = r; return; } // member functions public: Circle 3(); void set. Radius(double r); double get. Radius(void); }; // end Circle 3 class double Circle 3: : get. Radius(void){ return r; } #endif /* CIRCLE 3_H_ */ EE 2510 3 © tj
Static Member Variables & Functions • Static Member Variables - example * * static_ex. cpp * * Created on: Feb 27, 2019 * Author: johnsontimoj */ /////////////////////// // program to show the static functionality ////////////////////// #include <iostream> #include "Circle 3. h" using namespace std; // declare and initialize the static variable int Circle 3: : circle_cnt = 0; int main(void){ // Create some objects Circle 3 obj 1; cout << "Current num circles: Circle 3 obj 2; cout << "Current num circles: Circle 3 obj 3; cout << "Current num circles: " << obj 1. circle_cnt << endl; " << obj 2. circle_cnt << endl; " << obj 3. circle_cnt << endl; " << obj 2. circle_cnt << endl; " << obj 1. circle_cnt << endl; system("pause"); return 0; } EE 2510 4 © tj
Static Member Variables & Functions • Static Member Functions • Normally – functions that only access static member variables are also declared as static • These functions can be called independent of any specific object • Make the member function static inside the class declaration • Call the function separate from an instance of an object by using the reference notation Class. Name: : static. Member. Function(); EE 2510 5 © tj
Static Member Variables & Functions • Static Member Function - example * /* * Circle 4. cpp * * Created on: Mar 9, 2019 * Author: johnsontimoj */ * Circle 4. h * * Created on: Mar 9, 2019 * Author: johnsontimoj */ // // class declaration for Circle 4 class // for ee 2510 class notes // #ifndef CIRCLE 4_H_ #define CIRCLE 4_H_ #include "Circle 4. h" #define PI 3. 14159 Circle 4: : Circle 4() { r = 1; circle_cnt 4++; return; } class Circle 4 { // member data private: double r; public: static int circle_cnt 4; void Circle 4: : set. Radius(double r){ this->r = r; return; } // member functions public: Circle 4(); void set. Radius(double r); double get. Radius(void); static int get. Cnt(void); }; // end Circle 4 class double Circle 4: : get. Radius(void){ return r; } int Circle 4: : get. Cnt(void){ return circle_cnt 4; } #endif /* CIRCLE 4_H_ */ EE 2510 6 © tj
Static Member Variables & Functions • Static Member Function - example /* * static_ex 2. cpp * * Created on: Feb 27, 2019 * Author: johnsontimoj */ /////////////////////// // program to show the static functionality ////////////////////// #include <iostream> #include "Circle 4. h" using namespace std; // declare and initialize the static variable int Circle 4: : circle_cnt 4 = 0; int main(void){ // Create some objects Circle 4 obj 1; cout << "Current num circles: " << cout << "Current num circles using Circle 4 obj 2; cout << "Current num circles: " << Circle 4 obj 3; cout << "Current num circles: " << cout << "Current num circles using obj 1. circle_cnt 4 << endl; static fn: " << Circle 4: : get. Cnt() << endl; obj 2. circle_cnt 4 << endl; obj 3. circle_cnt 4 << endl; static fn: " << Circle 4: : get. Cnt() << endl; system("pause"); return 0; } EE 2510 7 © tj
- Slides: 7