The memory required by an object of some base class is usually less than the memory required for an object of a class you derive from that base class (because the derived classes usually add more fields). Therefore, you cannot allow the base class constructor to allocate the storage when you call it from inside the derived class's constructor. You can easily solve this problem by checking ESI within the derived class constructor and allocating any neces- sary storage for the object before calling the base class constructor. The second problem is the initialization of the VMT pointer. When you call the base class's constructor, it will initialize the VMT pointer with the address of the base class's virtual method table. A derived class object's_PVMT_ field, however, must point at the virtual method table for the derived class. Calling the base class constructor will always initialize the _pVMT_ field with the wrong pointer. To properly initialize the _pVMT_ field with the appropriate value, the derived class constructor must store the address of the derived class's virtual method table into the PVMT_ field after the call to the base class constructor (so that it overwrites the value written by the base class constructor).

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question
create constructor code
The memory required by an object of some base class is usually less than
the memory required for an object of a class you derive from that base class
(because the derived classes usually add more fields). Therefore, you cannot
allow the base class constructor to allocate the storage when you call it from
inside the derived class's constructor. You can easily solve this problem by
checking ESI within the derived class constructor and allocating any neces-
sary storage for the object before calling the base class constructor.
The second problem is the initialization of the MT pointer. When you call
the base class's constructor, it will initialize the VMT pointer with the address
of the base class's virtual method table. A derived class object's_PVMT_ field,
however, must point at the virtual method table for the derived class. Calling
the base class constructor will always initialize the _PVMT_ field with the wrong
pointer. To properly initialize the _PVMT_ field with the appropriate value, the
derived class constructor must store the address of the derived class's virtual
method table into the pVMT_field after the call to the base class constructor
(so that it overwrites the value written by the base class constructor).
Transcribed Image Text:The memory required by an object of some base class is usually less than the memory required for an object of a class you derive from that base class (because the derived classes usually add more fields). Therefore, you cannot allow the base class constructor to allocate the storage when you call it from inside the derived class's constructor. You can easily solve this problem by checking ESI within the derived class constructor and allocating any neces- sary storage for the object before calling the base class constructor. The second problem is the initialization of the MT pointer. When you call the base class's constructor, it will initialize the VMT pointer with the address of the base class's virtual method table. A derived class object's_PVMT_ field, however, must point at the virtual method table for the derived class. Calling the base class constructor will always initialize the _PVMT_ field with the wrong pointer. To properly initialize the _PVMT_ field with the appropriate value, the derived class constructor must store the address of the derived class's virtual method table into the pVMT_field after the call to the base class constructor (so that it overwrites the value written by the base class constructor).
Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY