C++ Programming - Functions - Discussion

Discussion Forum : Functions - Programs (Q.No. 40)
40.
What is correct about the following program?
#include<iostream.h> 
class Base
{
    int x, y, z; 
    public: 
    Base()
    {
        x = y = z = 0;
    }
    Base(int xx, int yy = 'A', int zz = 'B')
    {
        x = xx;
        y = x + yy;
        z = x + y;
    }
    void Display(void)
    {
        cout<< x << " " << y << " " << z << endl;
    }
};
class Derived : public Base
{
    int x, y; 
    public:
    Derived(int xx = 65, int yy = 66) : Base(xx, yy)
    {
        y = xx; 
        x = yy;
    }
    void Display(void)
    {
        cout<< x << " " << y << " ";
        Display(); 
    }
};
int main()
{
    Derived objD;
    objD.Display();
    return 0; 
}
The program will report compilation error.
The program will run successfully giving the output 66 65.
The program will run successfully giving the output 65 66.
The program will run successfully giving the output 66 65 65 131 196.
The program will produce the output 66 65 infinite number of times (or till stack memory overflow).
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
21 comments Page 1 of 3.

Ayush said:   3 years ago
Option E explain the recursive call for display function()
void Display(void)
{
cout<< x << " " << y << " ";
because of this-> Display();
}

Sarvesh karan said:   7 years ago
Why its not an error?

The derived class doesn't have a default constructor and only one parameterized constructor and default constructor cannot be invoked if the user has not specified it.

Sarvesh karan said:   7 years ago
I think I got the answer. Even if we are creating object with no arguments. It will invoke paremeterized constructor of derived class as it is default in its arguments.

Hulkcpp said:   1 decade ago
It will produce infinite number of output 66 65. Because it is a recursive method without end condition.

Meghnath malhothra said:   8 years ago
It will produce no.of 66 65 because it is a recursive function calling.

Anonymous said:   5 years ago
It should be the E option since it is printing the 66 65 infinitely.

Vishii said:   9 years ago
The answer should be 'B'. Can anyone explain why the answer is 'c'?

Venu Vangari said:   6 years ago
The program will produce the output 66 65 infinite number of times.

Tushar kumar said:   8 years ago
Yes, the answer is E well executed in the c++ compiler.

Manjunath said:   1 decade ago
Its a recursive call so it prints 66 65 infinitely.


Post your comments here:

Your comments will be displayed after verification.