注册 登录
编程论坛 C++教室

求助:请高手给分析一下程序流程

天子狂鹰 发布于 2007-12-24 14:20, 995 次点击
#include<iostream.h>
class A
{protected:int x,y;
public:
   A(int x1=0,int y1=0)
   {x=x1;y=y1;}
   A(A &s){x=s.x;y=s.y;
           cout<<"*****1"<<endl;
   }
   A &operator=(A &s)
   {x=s.x;
   y=s.y;
   cout<<"*****2"<<endl;
   return *this;
   }
   void display()
   {cout<<x<<y<<endl;}
   ~A(){cout<<"out class A!"<<endl;}
};
void fn(A s)
{cout<<"*****3"<<endl;
s.display();
}
main(){A a(1,1),b(2,2);
A c=a;
fn(a);
a=b;
}
最好详细一点,谢谢
3 回复
#2
StarWing832007-12-25 04:12
A c=a;
这一句调用拷贝构造函数
a=b;
这一句调用赋值操作符函数

剩下的都很简单,还要注意析构函数的顺序
#3
pzj6364842007-12-25 07:10
A a(1,1),b(2,2);//调用构造函数A(int ,int )
A c=a;//调用函数A &operator=(A &s)
fn(a);//调用函数void fn(A s)
a=b;//调用函数A &operator=(A &s)
#4
Lonelie2007-12-26 21:42
A a(1,1),b(2,2);//调用两次普通构造函数
A c=a;//初始化,调用拷贝构造函数
fn(a);//初始化s,调用拷贝构造函数,退出fn调用析构函数,析构s
a=b; //赋值,调用operator=
析构c
析构b
析构a
1