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; }