How can an object be created without calling the constructor in C++?
<p>The following program is in 5 files. The output is 0  32, instead of 14  32 and therefore an object is constructed without calling the constructor. How is this possible? </p>

<p>character.h:</p>

<pre><code>#ifndef CHARACTER_H
#define CHARACTER_H 

class Character
{
public:
    Character() {}

    class Settings
    {
    public:
        int size_;
        Settings():
            size_(14)
        {}
    };
    const static Settings DEFAULT_SETTINGS;
};

#endif // CHARACTER_H
</code></pre>

<p>character.cpp:</p>

<pre><code>#include "character.h"

const Character::Settings Character::DEFAULT_SETTINGS;
</code></pre>

<p>word.h</p>

<pre><code>#ifndef WORD_H
#define WORD_H

#include &lt;iostream&gt;

#include "character.h"

class Word 
{
public:
    Word() {}

    class Settings
    {
    public:
        Character::Settings characterSettings_;
        int length_;

        Settings():
            length_(32)
        {
            characterSettings_ = Character::DEFAULT_SETTINGS;
        }
    };

    static const Settings DEFAULT_SETTINGS;

    void write(Settings settings = DEFAULT_SETTINGS) // this default parameter is 
                                                     // constructed without a   
                                                     // constructor call
    {
        std::cout &lt;&lt; settings.characterSettings_.size_ &lt;&lt; std::endl;
        std::cout &lt;&lt; settings.length_ &lt;&lt; std::endl;
     }
 };

#endif // WORD_H
</code></pre>

<p>word.cpp</p>

<pre><code>#include "word.h"

const Word::Settings Word::DEFAULT_SETTINGS;
</code></pre>

<p>main.cpp</p>

<pre><code>#include "word.h"

int main(int argc, char *argv[])
{
    Word member;
    member.write();
    return 1;
}
</code></pre>
