In C++, when creating an object of a derived class, the base class constructor is invoked before the derived class constructor, and the destructor order is the reverse.
Example:
class Base {
public:
Base() {
cout << "Base constructor called." << endl;
}
~Base() {
cout << "Base destructor called." << endl;
}
};
class Derived : public Base {
public:
Derived() {
cout << "Derived constructor called." << endl;
}
~Derived() {
cout << "Derived destructor called." << endl;
}
};
int main() {
Derived d; // Output: Base constructor called. Derived constructor called. Derived destructor called. Base destructor called.
return 0;
}
In this example, the base class constructor is invoked first, followed by the derived class constructor. During object destruction, the derived class destructor is called first, followed by the base class destructor.