给出下面程序的输出结果
#include ﹤iostream.h﹥
class A{
private:
friend class B;
A(int val=0):data(val),use(1){ }
int use,data;
};
class B{
public:
A*pa;
B(int val=0):pa(new A(val)){ }
~B( ){if( -- pa -﹥use==0)delete pa;}
B(B&rhs){ ++ rhs -﹥use;pa=rhs.pa;}
B&operator=(B&rhs);
A*operator -﹥( ){return pa;}
void Display( ){
cout﹤﹤"data="﹤﹤pa -﹥data﹤﹤",use="﹤﹤pa -﹥use﹤﹤endl;
}
};
B&B::operator=(B&rhs)
{
if(this ==&rhs)return*this;
if( -- pa -﹥use = =0)delete pa;
++ rhs -﹥use;
pa=rhs.pa;
return * this;
}
int main( ){
B b1(1),b2(b1),b3(3);
b1.Display( );
b2.Display( );
b3.Display( );
b3=b1;
b1.Display( );
b3.Display( );
return 0;