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;
}
Quiz of this Question
Last Updated :
28 Jun, 2021
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...