C++ () operator overload
<p>I am a C programmer,
Now I am picking up C++ concepts (together with boost library).</p>

<p>please have look at my program and its output:</p>

<pre><code>#include &lt;boost/thread.hpp&gt;
#include &lt;iostream&gt;
using namespace std;
class PowerClass
    {
    private:

        int m, n;

    public:
        double *result;

        PowerClass(int m, int n)
        {
            cout&lt;&lt;"I am in constructor  " &lt;&lt; this &lt;&lt; endl;
            this-&gt;m=m; this-&gt;n=n;
            result = new double;
        }

        void operator () ()
        {
            cout&lt;&lt;"I am in ()  " &lt;&lt; this &lt;&lt; endl;
            *result=m;
            for (int i=1; i&lt;n; ++i)
            {
                *result*=m;
                boost::this_thread::yield();
            }
        }

};
int main()
{
    PowerClass p(2,3);
    cout&lt;&lt;"class created  " &lt;&lt;&amp;p&lt;&lt;endl;
    boost::thread t(p);
    t.join();

}
</code></pre>

<p>the out put is:</p>

<pre><code>I am in constructor  0xbfcfe40c
class created  0xbfcfe40c
I am in ()  0x9d0f154
</code></pre>

<p>The question could be more silly than plain:
I know () operator overloading function will be called upon thread creation, but why do I get a different address for the object (this) in the () operator, than the address of the same object in main() and constructor? 
is this another copy of the object? why? how may I get work on the same object in () operator overloading function.
Thank you </p>
