主观

给出下面程序的输出结果

#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;

参考答案
您可能感兴趣的试题
¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服