Open In App

C++ | Static Keyword | Question 4

Like Article
Like
Save
Share
Report

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
Previous
Next
Share your thoughts in the comments
Similar Reads