Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


  • Create BookmarkCreate Bookmark
  • Create Note or TagCreate Note or Tag
  • DownloadDownload
  • PrintPrint

Discussion

In C++, a complete object is constructed one base class at a time.

Say we have a base class B and a class D derived from B. When constructing a D object, while executing B’s constructor, the dynamic type of the object under construction is B. In particular, a call to a virtual function B::Fun will hit B’s definition of Fun, regardless of whether D overrides it or not; and that’s a good thing, because calling a D member function when the D object’s members haven’t even been initialized yet would lead to chaos. Only after the construction of B has completed is D’s constructor body executed and its identity as a D established. As a rule of thumb, keep in mind that during B’s construction there is no way to tell whether the B is a standalone object or a base part of some other further-derived object; virtually-acting virtual functions would be such a “way.”


  

You are currently reading a PREVIEW of this book.

                                                                                        

Get instant access to over
$1 million worth of books and videos.

  

Start a Free Trial