Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

C++ | Static Keyword | Question 4

  • Last Updated : 28 Jun, 2021

Predict the output of following C++ program.

Take a step-up from those "Hello World" programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.




#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

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!