C++ | Static Keyword | Question 4

Predict the output of following C++ program.

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


(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



My Personal Notes arrow_drop_up