Can somebody tell me where is the size coming from。
<p>I'm a beginner of C++. Now I got a little puzzled with the code below. I know there should be a delete operator with which I'm not concerned in somewhere. I just wondering , wow , it worked. Where is the argument "size" coming from?</p>

<pre><code>#include&lt;iostream&gt;
#include&lt;string&gt;

class Base {
public:
    Base() { }
    void *operator new( unsigned int size, std::string str ) {
    std::cout &lt;&lt; "Logging an allocation of ";
    std::cout &lt;&lt; size;
    std::cout &lt;&lt; " bytes for new object '";
    std::cout &lt;&lt; str;
    std::cout &lt;&lt; "'";
    std::cout &lt;&lt; std::endl;
    return malloc( size );
    }
private:
    int var1;
    double var2;
};

int main(int argc, char** argv){
    Base* b = new ("Base instance 1") Base;
}
</code></pre>

<p>Here is the result:</p>

<p>Logging an allocation of 16 bytes for new object 'Base instance 1'</p>
