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
Get step-by-step solutions from verified subject matter experts
