C++ | Static Keyword | Question 4
Predict the output of following C++ program.
#include <iostream> using namespace std; class A { private : int x; public : A( int _x) { x = _x; } int get() { return x; } }; class B { static A a; public : static int get() { return a.get(); } }; int main( void ) { B b; cout << b.get(); return 0; } |
(A) 0
(B) Linker Error: Undefined reference B::a
(C) Linker Error: Cannot access static a
(D) Linker Error: multiple functions with same name get()
Answer: (B)
Explanation: There is a compiler error because static member a is not defined in B.
To fix the error, we need to explicitly define a. The following program works fine.
#include <iostream > using namespace std; class A { private: int x; public: A(int _x) { x = _x; } int get() { return x; } }; class B { static A a; public: static int get() { return a.get(); } }; A B::a(0); int main(void) { B b; cout << b.get(); return 0; }