From my understanding the following code will execute in this order:

1. Derived constructor is called.
2. Base object is constructed using the default base constructor.
3. Body of the derived constructor executes.

If so, isn't the member z is assigned a value twice?

```
class base {
public:
    int x, y, z;
    base() {x = 0; y = 0; z = 0;};
};

class derived : public base {
public:
    derived() {z = 5;};
};

```

Is there a more efficient way to create an object of class "derived" so it uses a different constructor, in this case, one that would only assign members x and y a value, leaving z to be assigned a value in derived()?