下面代码的执行结果是什么?为什么?

class A{
int n;
public:
A() {};
A(int i){n=i;}
~A() { cout<<"n="<<n<<endl;}
};

class B
{
A a;
int m;
public:
B(int i,int j):a(i){m=j;}
~B(){cout<<"m="<<m<<endl;}
};
void main()
{
B b(1,2);
}

1、先看这段代码
void main()
{
B b(1,2);
}
创建一个B类实例b,调用B(Int i,int j)实例化;在这个函数中,调用a(i),并设定{m=j}
2、看这段
A(int i){n=i;}
~A() { cout<<"n="<<n<<endl;}
}
a的默认构造函数没有动作,看上面的这段。完成构造函数后,n=i,就是n=1,接着析构函数,输出n=1,回车换行
3、看这段
~B(){cout<<"m="<<m<<endl;}
到现在执行B的析构函数,输出m=?上面已经设定了m=j,就是m=2,于是输出m=2,回车换行
4、最后的输出结果:
n=1
m=2

个人意见,仅供参考
温馨提示:答案为网友推荐,仅供参考