Examveda

What will be the output of the following C++ code?
#include <iostream>
#include <vector>
using namespace std;
class Component
{ 
    public:
    virtual void traverse() = 0;
};
class Leaf: public Component
{
    int value;
    public:
    Leaf(int val)
    {
        value = val;
    }
    void traverse()
    {
        cout << value << ' ';
    }
};
class Composite: public Component
{
    vector < Component * > children;
    public:
    void add(Component *ele)
    {
        children.push_back(ele);
    }
    void traverse()
    {
        for (int i = 0; i < children.size(); i++)
            children[i]->traverse();
    }
};
int main()
{
    Composite containers[4];
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 3; j++)
            containers[i].add(new Leaf(i *3+j));
        for (int k = 1; k < 4; k++)
            containers[0].add(&(containers[k]));
        for (int p = 0; p < 4; p++)
        {
            containers[p].traverse();
        }
}

A. 345

B. 678

C. 901

D. 0 1 2 3 4 5 6 7 8 9 10 11
3 4 5
6 7 8
9 10 11

Answer: Option D


Join The Discussion

Related Questions on C plus plus miscellaneous

What is the difference between '++i' and 'i++' in C++?

A. None of the above

B. They both have the same effect

C. '++i' increments the value of 'i' before returning it, while 'i++' increments the value of 'i' after returning it

D. '++i' increments the value of 'i' after returning it, while 'i++' increments the value of 'i' before returning it