Question: Correct place put on virtual function. When necessary fix you should do it. class A { public: A() :m_msg(Apple) {} A(string msg) : m_msg(msg) {}

Correct place put on virtual function. When necessary fix you should do it.

class A {

public:

A() :m_msg("Apple") {}

A(string msg) : m_msg(msg) {}

virtual ~A() {

cout << "A::~A "; message();}

void message() const {

cout << "A::message() ";

cout << m_msg << endl; } private: string m_msg;};

class B: public A {

public:

B() :A("Orange") {}

B(string msg): A(msg), m_a(msg) {}

~B() { cout << "B::~B "; }

void message() const {

cout << "B::message() ";

m_a.message();

} private:

A m_a;

}; int main() {

A *b1 = new B;

B *b2 = new B;

A *b3 = new B("Apple");

b1[0].message();

b2->message();

(*b3).message();

delete b1;

delete b2;

delete b3;

}

Now make As message() virtual, i.e.,

virtual void message() const;

above function I placed it, and displayed compile error message as "void A::message(void) const member function already defined or declared".

please give me correct answer.

and after execute it,

How many times will you see the word Apple in the output? ____ How about Orange? ____

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!