Ich habe ein leichteren Program geschrieben,aber stellte ich eine extravagantes Problem fest.
Warum die Antworten sind:
---------------------------------------------------------
C:\helloworld>app
normal ctr
return
a=1 b=2 str=hello,world
des~
---------------------------------------------------------
Mein System ist:
winXP Home
minGW Version 3.2.0 for Win
---------------------------------------------------------
Außere Line 1,2,4... .... ....
Ich verstehte nicht, wo das Program den Copy-Constructor benutzt worden ist.Trotzdem war das Ergebnis sicher,daß der Copy-Constructor verwendet worden ist. Ich bestimme...
---------------------------------------------------------
Mein Program ist
---------------------------------------------------------
#include <string>
#include <iostream>
using namespace std;
class A
{
public:
int a;
int b;
string str;
public:
A(){ cout<<"normal ctr"<<endl; }
A( const A& a ) //copy constructor called here
: a( a.a ), b( a.b ), str( a.str )
{ cout<<"cpy ctr"<<endl; }
~A(){ cout<<"des~"<<endl; }//destructor called here
public:
static A from()//a factory method
{
A ca;
ca.a = 1;
ca.b = 2;
ca.str = "hello,world";
cout<<"return"<<endl;
return ca;
}
void print()
{
cout<<"a="<<a<<" b="<<b<<" str="<<str<<endl;
}
};
int main()
{
A a = A::from();
a.print();
}