Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: All
Sep 4, 2001

Constructor Call Sequence


The constructors in a class hierarchy execute in the following sequence: base class constructors are called first, then member object's constructors, and finally, the constructor of the derived class executes. If a class has multiple base classes, the base classes' constructors execute right to left, according to their position in the base class list. For example:
 
struct C: public A, public B
{
 C() {}
private:
 F f;
};

int main()
{
 C c;
}

When c is instantiated, the constructors are called in the following sequence: A(), B(), F(), C(). Constructors of virtual base classes execute before any other non-virtual base class constructors. Consider:
 
struct M: public A, public B, virtual public V
{
};

In this example, the constructors are called in the following sequence: V(), A(), B(), M(). Destructors are always executed in the reverse order of constructor calls. Therefore, when M is destroyed, the destructors execute in the following order: ~M(), ~B(),~A(),~V().
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date